openwrtv4/package/network/services/hostapd/patches/620-scan_wait.patch

73 lines
1.7 KiB
Diff

--- a/hostapd/main.c
+++ b/hostapd/main.c
@@ -32,6 +32,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[];
@@ -279,6 +281,14 @@ static int hostapd_driver_init(struct ho
return 0;
}
+static void hostapd_setup_complete_cb(void *ctx)
+{
+ if (daemonize && os_daemonize(pid_file)) {
+ perror("daemon");
+ return;
+ }
+ daemonize = 0;
+}
static struct hostapd_iface *
hostapd_interface_init(struct hapd_interfaces *interfaces,
@@ -298,6 +308,7 @@ hostapd_interface_init(struct hapd_inter
iface->bss[0]->conf->logger_stdout_level--;
}
+ iface->bss[0]->setup_complete_cb = hostapd_setup_complete_cb;
if (iface->conf->bss[0].iface[0] != 0 ||
hostapd_drv_none(iface->bss[0])) {
if (hostapd_driver_init(iface) ||
@@ -310,7 +321,6 @@ hostapd_interface_init(struct hapd_inter
return iface;
}
-
/**
* handle_term - SIGINT and SIGTERM handler to terminate hostapd process
*/
@@ -425,8 +435,6 @@ static void hostapd_global_deinit(const
#endif /* CONFIG_NATIVE_WINDOWS */
eap_server_unregister_methods();
-
- os_daemonize_terminate(pid_file);
}
@@ -452,11 +460,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;
@@ -540,8 +543,7 @@ int main(int argc, char *argv[])
struct hapd_interfaces interfaces;
int ret = 1;
size_t i;
- int c, debug = 0, daemonize = 0;
- char *pid_file = NULL;
+ int c, debug = 0;
const char *log_file = NULL;
const char *entropy_file = NULL;