- close the listening socket in the child process when running as a daemon
authorAndrew Tridgell <tridge@samba.org>
Sun, 5 May 1996 03:04:19 +0000 (03:04 +0000)
committerAndrew Tridgell <tridge@samba.org>
Sun, 5 May 1996 03:04:19 +0000 (03:04 +0000)
- exit with a non-zero exit code if open_sockets() fails

source/smbd/server.c

index 605e98be0f0a4d5684e4b8eabe23ed67199f493a..c77a5ca8a7aff83f4001082235b21e49ecaa710e 100644 (file)
@@ -2225,6 +2225,9 @@ static BOOL open_sockets(BOOL is_daemon,int port)
              signal(SIGPIPE, SIGNAL_CAST sig_pipe);
              signal(SIGCLD, SIGNAL_CAST SIG_DFL);
 #endif
+             /* close the listening socket */
+             close(s);
+
              /* close our standard file descriptors */
              close_low_fds();
   
@@ -4280,22 +4283,23 @@ int main(int argc,char *argv[])
       become_daemon();
     }
 
-  if (open_sockets(is_daemon,port))
-    {      
-      /* possibly reload the services file. */
-      reload_services(True);
+  if (!open_sockets(is_daemon,port))
+    exit(1);
 
-      maxxmit = MIN(lp_maxxmit(),BUFFER_SIZE);
+  /* possibly reload the services file. */
+  reload_services(True);
 
-      if (*lp_rootdir())
-       {
-         if (sys_chroot(lp_rootdir()) == 0)
-           DEBUG(2,("%s changed root to %s\n",timestring(),lp_rootdir()));
-       }
+  maxxmit = MIN(lp_maxxmit(),BUFFER_SIZE);
 
-      process();
-      close_sockets();
+  if (*lp_rootdir())
+    {
+      if (sys_chroot(lp_rootdir()) == 0)
+       DEBUG(2,("%s changed root to %s\n",timestring(),lp_rootdir()));
     }
+
+  process();
+  close_sockets();
+
   exit_server("normal exit");
   return(0);
 }