diff --git a/include/haproxy/global.h b/include/haproxy/global.h index 72370c62dd3a..13fbe7c7cd70 100644 --- a/include/haproxy/global.h +++ b/include/haproxy/global.h @@ -68,6 +68,7 @@ void hap_register_feature(const char *name); int split_version(const char *version, unsigned int *value); int compare_current_version(const char *version); void display_version(); +void handle_pidfile(void); void mworker_accept_wrapper(int fd); diff --git a/src/haproxy.c b/src/haproxy.c index 06eaf61ffac0..fd77f35454f0 100644 --- a/src/haproxy.c +++ b/src/haproxy.c @@ -1777,7 +1777,7 @@ static void apply_daemon_mode() } /* Only returns if everything is OK. If something fails, it exits. */ -static void handle_pidfile() +void handle_pidfile(void) { char pidstr[100]; @@ -1792,6 +1792,9 @@ static void handle_pidfile() } snprintf(pidstr, sizeof(pidstr), "%d\n", (int)getpid()); DISGUISE(write(pidfd, pidstr, strlen(pidstr))); + close(pidfd); + /* We won't ever use this anymore */ + ha_free(&global.pidfile); } static void get_listeners_fd() @@ -2568,14 +2571,6 @@ static void step_init_4(void) clock_update_date(0, 1); clock_adjust_now_offset(); ready_date = date; - - /* close the pidfile both in children and father */ - if (pidfd >= 0) { - //lseek(pidfd, 0, SEEK_SET); /* debug: emulate eglibc bug */ - close(pidfd); - } - /* We won't ever use this anymore */ - ha_free(&global.pidfile); } /* This function sets verbosity modes. Should be called after the first