okra pushed a commit to branch master.

http://git.enlightenment.org/enlightenment/gadgets/wireless.git/commit/?id=d1788bde1f21ef30a2f168f93890cf2401975e59

commit d1788bde1f21ef30a2f168f93890cf2401975e59
Author: Stephen Houston <stephen@localhost.localdomain>
Date:   Thu Nov 30 10:52:35 2017 -0600

    Update aps and their corresponding settings when things change.
---
 TODO                 |  4 +++-
 src/networkmanager.c | 25 ++++++++++++++++++++++---
 2 files changed, 25 insertions(+), 4 deletions(-)

diff --git a/TODO b/TODO
index 8c98b9e..453ca3b 100644
--- a/TODO
+++ b/TODO
@@ -2,13 +2,15 @@ NetworkManager Support:
 
 --Untested--
 DNS config editing - DNS domain and name servers are likely not stored 
correctly.
+
 Proxy config editing
 
 --Issues--
 Doesn't always update the icon correctly - Forgetting a wifi network goes back 
to ethernet mode... why?
+
 Random crashes -- Are they sandbox related or wireless related?
 
-When forgetting a network the connection setting is removed and thus doesn't 
show up in the network list anymore -- however the access point is still 
available so this should somehow update that the connection setting is removed 
but not the access point.
+There is a duplicate entry for settings and aps in the wifi list -- This is so 
that when you delete a setting, the ap still exists.  Is there a better way to 
do that?
 
 --Needed--
 Add WEP support to agent. Currently only WPA will work.
diff --git a/src/networkmanager.c b/src/networkmanager.c
index d3e74c8..eaa124a 100644
--- a/src/networkmanager.c
+++ b/src/networkmanager.c
@@ -1506,7 +1506,8 @@ static void
 _networkmanager_manager_getap(void *data, const void *msg, Eldbus_Message_Iter 
*it)
 {
    const char *setting = msg;
-   NetworkManager_Service *ns = data;
+   Eina_List *l;
+   NetworkManager_Service *ns = data, *nss;
 
    if (eina_streq(setting, "Ssid"))
      {
@@ -1573,6 +1574,26 @@ _networkmanager_manager_getap(void *data, const void 
*msg, Eldbus_Message_Iter *
              ns->security = WIRELESS_NETWORK_SECURITY_IEEE8021X;
           }
      }
+   EINA_LIST_FOREACH(networkmanager_services_list[ns->type], l, nss)
+     {
+        if (!nss->access_point)
+          {
+             if (!nss->conn_ssid) continue;
+             if (eina_streq(ns->name, nss->conn_ssid))
+               {
+                  if (nss->strength < ns->strength)
+                    {
+                       nss->strength = ns->strength;
+                       nss->security = ns->security;
+                       if (nss->wn)
+                         free(nss->wn);
+                       _networkmanager_service_convert(nss);
+                       if (_networkmanager_service_is_connected(nss))
+                         _networkmanager_update_current_network(nss, 
nss->type);
+                    }
+               }
+          }
+     }
 }
 
 static void
@@ -1805,8 +1826,6 @@ _networkmanager_service_ap_new(int type, const char 
*path, Eldbus_Message_Iter *
                          free(nss->wn);
                        _networkmanager_service_convert(nss);
                     }
-                  _networkmanager_service_free_nolist(ns);
-                  return NULL;
                }
           }
      }

-- 


Reply via email to