hostapd: backport package from trunk r39765
[12.09/openwrt.git] / package / hostapd / patches / 490-scan_wait.patch
diff --git a/package/hostapd/patches/490-scan_wait.patch b/package/hostapd/patches/490-scan_wait.patch
new file mode 100644 (file)
index 0000000..61715d6
--- /dev/null
@@ -0,0 +1,66 @@
+--- a/hostapd/main.c
++++ b/hostapd/main.c
+@@ -33,6 +33,8 @@
+ extern int wpa_debug_level;
+ extern int wpa_debug_show_keys;
+ extern int wpa_debug_timestamp;
++static int daemonize = 0;
++static char *pid_file = NULL;
+ extern struct wpa_driver_ops *wpa_drivers[];
+@@ -147,6 +149,14 @@ static void hostapd_logger_cb(void *ctx,
+ }
+ #endif /* CONFIG_NO_HOSTAPD_LOGGER */
++static void hostapd_setup_complete_cb(void *ctx)
++{
++      if (daemonize && os_daemonize(pid_file)) {
++              perror("daemon");
++              return;
++      }
++      daemonize = 0;
++}
+ /**
+  * hostapd_driver_init - Preparate driver interface
+@@ -165,6 +175,8 @@ static int hostapd_driver_init(struct ho
+               return -1;
+       }
++      hapd->setup_complete_cb = hostapd_setup_complete_cb;
++
+       /* Initialize the driver interface */
+       if (!(b[0] | b[1] | b[2] | b[3] | b[4] | b[5]))
+               b = NULL;
+@@ -381,8 +393,6 @@ static void hostapd_global_deinit(const 
+ #endif /* CONFIG_NATIVE_WINDOWS */
+       eap_server_unregister_methods();
+-
+-      os_daemonize_terminate(pid_file);
+ }
+@@ -408,11 +418,6 @@ static int hostapd_global_run(struct hap
+       }
+ #endif /* EAP_SERVER_TNC */
+-      if (daemonize && os_daemonize(pid_file)) {
+-              perror("daemon");
+-              return -1;
+-      }
+-
+       eloop_run();
+       return 0;
+@@ -521,8 +526,7 @@ int main(int argc, char *argv[])
+       struct hapd_interfaces interfaces;
+       int ret = 1;
+       size_t i, j;
+-      int c, debug = 0, daemonize = 0;
+-      char *pid_file = NULL;
++      int c, debug = 0;
+       const char *log_file = NULL;
+       const char *entropy_file = NULL;
+       char **bss_config = NULL, **tmp_bss;