Update p2p pending wifi device, if wifi is removed
as well. Such scenario occurs in a long delayed p2p
group negotiation.
---
 plugins/wifi.c | 14 ++++++++++++++
 1 file changed, 14 insertions(+)

diff --git a/plugins/wifi.c b/plugins/wifi.c
index bdb4c24..4424d95 100644
--- a/plugins/wifi.c
+++ b/plugins/wifi.c
@@ -196,6 +196,18 @@ static struct wifi_data *get_pending_wifi_data(const char 
*ifname)
        return NULL;
 }
 
+static void remove_pending_wifi_device(struct wifi_data *wifi)
+{
+       GList *link;
+
+       link = g_list_find(pending_wifi_device, wifi);
+
+       if (!link)
+               return;
+
+       pending_wifi_device = g_list_delete_link(pending_wifi_device, link);
+}
+
 static void peer_cancel_timeout(struct wifi_data *wifi)
 {
        if (wifi->p2p_connection_timeout > 0)
@@ -507,6 +519,8 @@ static void wifi_remove(struct connman_device *device)
 
        check_p2p_technology();
 
+       remove_pending_wifi_device(wifi);
+
        if (wifi->p2p_find_timeout) {
                g_source_remove(wifi->p2p_find_timeout);
                connman_device_unref(wifi->device);
-- 
1.9.1

_______________________________________________
connman mailing list
[email protected]
https://lists.connman.net/mailman/listinfo/connman

Reply via email to