Add daemon_detach, and use it.
[apps/pfixtools.git] / srsd.c
diff --git a/srsd.c b/srsd.c
index 8d88677..b28b024 100644 (file)
--- a/srsd.c
+++ b/srsd.c
@@ -172,7 +172,7 @@ int start_listener(int epollfd, int port, bool decoder)
     int sock;
 
     addr.sin_port = htons(port);
-    sock = tcp_listen((const struct sockaddr *)&addr, sizeof(addr));
+    sock = tcp_listen_nonblock((const struct sockaddr *)&addr, sizeof(addr));
     if (sock < 0) {
         return -1;
     }
@@ -408,5 +408,9 @@ int main(int argc, char *argv[])
         return EXIT_FAILURE;
     }
 
+    if (daemon_detach() < 0) {
+        syslog(LOG_CRIT, "unable to fork");
+        return EXIT_FAILURE;
+    }
     return main_loop(srs, argv[optind], port_enc, port_dec);
 }