]> git.mikk.net Git - smtpsink/commitdiff
Daemonization now works, and is the default. Creating threads
authorchris mikkelson <chris@mikk.net>
Fri, 27 Mar 2009 03:20:03 +0000 (22:20 -0500)
committerchris mikkelson <chris@mikk.net>
Fri, 27 Mar 2009 03:20:03 +0000 (22:20 -0500)
then forking breaks synchronization, leading to a double-init
of a mutex, and a core dump....

smtpsink.c

index f479085586838ca07ba73a2d557874f6cb5aa35f..5e836a9bdbfbb4419ad94320be52b7743464158b 100644 (file)
@@ -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();