supplicant: Call scan callback if needed when removing interface
authorPatrik Flykt <patrik.flykt@linux.intel.com>
Fri, 15 Jun 2012 11:13:49 +0000 (14:13 +0300)
committerPatrik Flykt <patrik.flykt@linux.intel.com>
Mon, 18 Jun 2012 07:59:36 +0000 (10:59 +0300)
Check whether a scan callback is set for the interface when
an interface removed signal is received from wpa_supplicant.
wpa_supplicant seems not to reply to any outstanding scan method
calls after a wpa_supplicant 'RemoveInterface' has been received.

gsupplicant/supplicant.c

index decf5fa..1a10291 100644 (file)
@@ -437,6 +437,21 @@ static void remove_interface(gpointer data)
        g_hash_table_destroy(interface->net_mapping);
        g_hash_table_destroy(interface->network_table);
 
+       if (interface->scan_callback != NULL) {
+               SUPPLICANT_DBG("call interface %p callback %p scanning %d",
+                               interface, interface->scan_callback,
+                               interface->scanning);
+
+               interface->scan_callback(-EIO, interface, interface->scan_data);
+                interface->scan_callback = NULL;
+                interface->scan_data = NULL;
+
+               if (interface->scanning == TRUE) {
+                       interface->scanning = FALSE;
+                       callback_scan_finished(interface);
+               }
+       }
+
        callback_interface_removed(interface);
 
        g_free(interface->wps_cred.key);