summaryrefslogtreecommitdiff
path: root/plugins
diff options
context:
space:
mode:
authorDaniel Wagner <wagi@monom.org>2020-03-17 19:12:11 +0100
committerDaniel Wagner <wagi@monom.org>2020-03-22 19:14:43 +0100
commitf1444a26bff1b4e3e980007f7fd54845d63825c1 (patch)
tree51da6013ebd45551e180c13a6ec3948195231b31 /plugins
parent8382eaf499ca4e62120aef0b117f5b244cd6a787 (diff)
downloadconnman-f1444a26bff1b4e3e980007f7fd54845d63825c1.tar.gz
iwd: Mark network avaible after scaning
connman_device_set_scanning() marks all networks as unavailable during the scan period. The iwd plugin needs mark the network available again. Fixes: 6b391cfd294d ("iwd: Synchronize station scanning property with scan state")
Diffstat (limited to 'plugins')
-rw-r--r--plugins/iwd.c22
1 files changed, 16 insertions, 6 deletions
diff --git a/plugins/iwd.c b/plugins/iwd.c
index 8568fcd4..5df3c088 100644
--- a/plugins/iwd.c
+++ b/plugins/iwd.c
@@ -972,12 +972,15 @@ static void _update_signal_strength(const char *path, int16_t signal_strength)
connman_network_set_strength(iwdn->network,
calculate_strength(signal_strength));
+ connman_network_set_available(iwdn->network, true);
connman_network_update(iwdn->network);
}
static void ordered_networks_cb(DBusMessage *message, void *user_data)
{
DBusMessageIter array, entry;
+ struct iwd_device *iwdd;
+ char *path = user_data;
DBG("");
@@ -1005,6 +1008,11 @@ static void ordered_networks_cb(DBusMessage *message, void *user_data)
dbus_message_iter_next(&entry);
}
+
+ iwdd = g_hash_table_lookup(devices, path);
+ if (iwdd)
+ connman_device_set_scanning(iwdd->device,
+ CONNMAN_SERVICE_TYPE_WIFI, false);
}
static void update_signal_strength(struct iwd_station *iwds)
@@ -1012,7 +1020,7 @@ static void update_signal_strength(struct iwd_station *iwds)
if (!g_dbus_proxy_method_call(iwds->proxy,
"GetOrderedNetworks",
NULL, ordered_networks_cb,
- NULL, NULL))
+ g_strdup(iwds->path), g_free))
DBG("GetOrderedNetworks() failed");
}
@@ -1054,13 +1062,15 @@ static void station_property_change(GDBusProxy *proxy, const char *name,
dbus_message_iter_get_basic(iter, &scanning);
iwds->scanning = scanning;
- if (!iwds->scanning)
+ if (iwds->scanning) {
+ iwdd = g_hash_table_lookup(devices, path);
+ if (iwdd)
+ connman_device_set_scanning(iwdd->device,
+ CONNMAN_SERVICE_TYPE_WIFI, true);
+ } else {
update_signal_strength(iwds);
+ }
- iwdd = g_hash_table_lookup(devices, path);
- if (iwdd)
- connman_device_set_scanning(iwdd->device,
- CONNMAN_SERVICE_TYPE_WIFI, iwds->scanning);
DBG("%s scanning %d", path, iwds->scanning);
}