When interface was already created in wpa_supplicant,
p2p detection was failing. Thus, calling p2p detection
after interface property has been signaled fixes this
detection failure.
---
gsupplicant/supplicant.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/gsupplicant/supplicant.c b/gsupplicant/supplicant.c
index b8ad5a2..715bac2 100644
--- a/gsupplicant/supplicant.c
+++ b/gsupplicant/supplicant.c
@@ -1874,6 +1874,15 @@ static void interface_bss_removed(DBusMessageIter *iter,
void *user_data)
g_hash_table_remove(interface->network_table, network->group);
}
+static void interface_detect_p2p_support(GSupplicantInterface *interface)
+{
+ SUPPLICANT_DBG("p2p detect");
+ if (interface->mode_capa & G_SUPPLICANT_CAPABILITY_MODE_P2P) {
+ interface->p2p_support = true;
+ callback_p2p_support(interface);
+ }
+}
+
static void interface_property(const char *key, DBusMessageIter *iter,
void *user_data)
{
@@ -1909,6 +1918,7 @@ static void interface_property(const char *key,
DBusMessageIter *iter,
if (g_strcmp0(key, "Capabilities") == 0) {
supplicant_dbus_property_foreach(iter, interface_capability,
interface);
+ interface_detect_p2p_support(interface);
} else if (g_strcmp0(key, "State") == 0) {
const char *str = NULL;
@@ -2075,22 +2085,13 @@ static void interface_added(DBusMessageIter *iter, void
*user_data)
supplicant_dbus_property_foreach(iter, interface_property,
interface);
interface_property(NULL, NULL, interface);
- goto p2p_detection;
+ return;
}
supplicant_dbus_property_get_all(path,
SUPPLICANT_INTERFACE ".Interface",
interface_property, interface,
interface);
-
-p2p_detection:
-
- if (interface->mode_capa & G_SUPPLICANT_CAPABILITY_MODE_P2P) {
- interface->p2p_support = true;
- callback_p2p_support(interface);
- }
-
- return;
}
static void interface_removed(DBusMessageIter *iter, void *user_data)
--
1.9.1
_______________________________________________
connman mailing list
[email protected]
https://lists.connman.net/mailman/listinfo/connman