From 45669a452a963ac83bb788d66879f58e6feb894e Mon Sep 17 00:00:00 2001 From: Patrick Walther Date: Fri, 24 Jul 2020 14:41:09 +0200 --- hostapd/main.c | 29 +++++++++++++---------------- 1 file changed, 13 insertions(+), 16 deletions(-) diff --git a/hostapd/main.c b/hostapd/main.c index 0c972bba9..859ff3046 100644 --- a/hostapd/main.c +++ b/hostapd/main.c @@ -39,6 +39,8 @@ struct hapd_global { }; static struct hapd_global global; +static int daemonize = 0; +static char *pid_file = NULL; #ifndef CONFIG_NO_HOSTAPD_LOGGER @@ -146,6 +148,14 @@ static void hostapd_logger_cb(void *ctx, const u8 *addr, unsigned int module, } #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 @@ -164,6 +174,8 @@ static int hostapd_driver_init(struct hostapd_iface *iface) 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; @@ -404,8 +416,6 @@ static void hostapd_global_deinit(const char *pid_file, int eloop_initialized) #endif /* CONFIG_NATIVE_WINDOWS */ eap_server_unregister_methods(); - - os_daemonize_terminate(pid_file); } @@ -431,18 +441,6 @@ static int hostapd_global_run(struct hapd_interfaces *ifaces, int daemonize, } #endif /* EAP_SERVER_TNC */ - if (daemonize) { - if (os_daemonize(pid_file)) { - wpa_printf(MSG_ERROR, "daemon: %s", strerror(errno)); - return -1; - } - if (eloop_sock_requeue()) { - wpa_printf(MSG_ERROR, "eloop_sock_requeue: %s", - strerror(errno)); - return -1; - } - } - eloop_run(); return 0; @@ -645,8 +643,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;