From 9f8254d616fce265f856fded542d3df84a73c61c Mon Sep 17 00:00:00 2001 From: chris mikkelson Date: Thu, 26 Mar 2009 22:20:03 -0500 Subject: [PATCH] Daemonization now works, and is the default. Creating threads then forking breaks synchronization, leading to a double-init of a mutex, and a core dump.... --- smtpsink.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/smtpsink.c b/smtpsink.c index f479085..5e836a9 100644 --- a/smtpsink.c +++ b/smtpsink.c @@ -56,8 +56,10 @@ main(int argc, char **argv) int concurrency = 10000; char *l_default = "0.0.0.0:25"; int flaglisten = 0; + char **listeners = malloc(argc * sizeof(char *)); + int i, nlisten = 0; - int daemonize = 0; + int daemonize = 1; int pidfd = -1; uid_t uid = 0; gid_t gid = 0; @@ -80,7 +82,7 @@ main(int argc, char **argv) usage(argv[0]); break; case 'l': - new_listener(optarg); + listeners[nlisten++] = optarg; flaglisten = 1; break; case 'u': @@ -135,7 +137,11 @@ main(int argc, char **argv) openlog("smtpsink",LOG_PID,LOG_MAIL); signal(SIGPIPE,SIG_IGN); - pthread_create(&sl, 0, sigloop, event_init()); + pthread_create(&sl, 0, sigloop, event_init()); + + for (i = 0; i < nlisten; i++) { + new_listener(listeners[i]); + } conn_pool_init(concurrency); io_init(); -- 2.50.1