emacs-elpa-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[elpa] master 141ad1b 65/76: Fixed NetworkManager connection bug.


From: Ian Dunn
Subject: [elpa] master 141ad1b 65/76: Fixed NetworkManager connection bug.
Date: Thu, 23 Feb 2017 19:42:55 -0500 (EST)

branch: master
commit 141ad1b565f24e421ef2df15f6bab048c1dcaf28
Author: Ian Dunn <address@hidden>
Commit: Ian Dunn <address@hidden>

    Fixed NetworkManager connection bug.
    
    * enwc-nm.el (enwc-nm-wireless-connect): Connect using a connection object
      rather than an access point object.
---
 lisp/enwc-nm.el | 27 +++++++++++++++++++++++----
 1 file changed, 23 insertions(+), 4 deletions(-)

diff --git a/lisp/enwc-nm.el b/lisp/enwc-nm.el
index b0b51f8..df42d1e 100644
--- a/lisp/enwc-nm.el
+++ b/lisp/enwc-nm.el
@@ -258,10 +258,29 @@ This gets the connection path from NW, and connects to 
it."
     (enwc-nm-wireless-connect nw)))
 
 (defun enwc-nm-wireless-connect (nw)
-  (enwc-nm-dbus-default-call-method "ActivateConnection"
-                                    :object-path nw
-                                    :object-path enwc-nm-wireless-dev
-                                    :object-path nw))
+  (let ((ap-ssid (dbus-byte-array-to-string
+                  (dbus-get-property :system
+                                     enwc-nm-dbus-service
+                                     nw
+                                     
"org.freedesktop.NetworkManager.AccessPoint"
+                                     "Ssid")))
+        (profile-table (make-hash-table :test #'equal)))
+    ;; Create a hash table of connections, indexed by ssid
+    ;; TODO: Store this somewhere else
+    (dolist (conn (enwc-nm-list-connections))
+      (let ((settings (dbus-call-method :system
+                                        enwc-nm-dbus-service
+                                        conn
+                                        
"org.freedesktop.NetworkManager.Settings.Connection"
+                                        "GetSettings")))
+        (map-put profile-table
+                 (dbus-byte-array-to-string (caadr (assoc-string "ssid" (cadr 
(assoc-string "802-11-wireless" settings)))))
+                 conn)))
+    (when-let (conn (map-elt profile-table ap-ssid))
+      (enwc-nm-dbus-default-call-method "ActivateConnection"
+                                        :object-path conn
+                                        :object-path enwc-nm-wireless-dev
+                                        :object-path conn))))
 
 (defun enwc-nm-wired-connect (nw)
   (enwc-nm-dbus-default-call-method "ActivateConnection"



reply via email to

[Prev in Thread] Current Thread [Next in Thread]