Made server launching somewhat cleaner and faster.

diff --git a/server/request.c b/server/request.c
index d15faac..dcb7543 100644
--- a/server/request.c
+++ b/server/request.c
@@ -103,6 +103,7 @@
 }
 
 /* die on a fatal error */
+static void fatal_error( const char *err, ... ) WINE_NORETURN;
 static void fatal_error( const char *err, ... )
 {
     va_list args;
@@ -115,6 +116,7 @@
 }
 
 /* die on a fatal error */
+static void fatal_perror( const char *err, ... ) WINE_NORETURN;
 static void fatal_perror( const char *err, ... )
 {
     va_list args;
@@ -392,6 +394,18 @@
     if (!(master_socket = alloc_object( &master_socket_ops, fd )))
         fatal_error( "out of memory\n" );
     set_select_events( &master_socket->obj, POLLIN );
+
+    /* go in the background */
+    switch(fork())
+    {
+    case -1:
+        fatal_perror( "fork" );
+    case 0:
+        setsid();
+        break;
+    default:
+        _exit(0);  /* do not call atexit functions */
+    }
 }
 
 /* close the master socket and stop waiting for new clients */