Adjust pull request #80
[umurmur.git] / src / main.c
index d98fb6aca3a89b42fa3d4fbe2d21d51cd74208ec..c74d9646bd71f168ee29627019a76da272ca61ba 100644 (file)
@@ -322,9 +322,25 @@ int main(int argc, char **argv)
                        Log_init(false);
                        if (pidfile != NULL)
                                lockfile(pidfile);
+#ifdef POSIX_PRIORITY_SCHEDULING
+                       /* Set the scheduling policy, has to be called after daemonizing
+                        * but before we drop privileges */
+                       if (realtime)
+                               setscheduler();
+#endif
+
                }
                else Log_init(true);
 
+#ifdef POSIX_PRIORITY_SCHEDULING
+               /* We still want to set scheduling policy if nodaemon is specified,
+                * but if we are daemonizing setscheduler() will be called above */
+               if (nodaemon) {
+                       if (realtime)
+                               setscheduler();
+               }
+#endif
+
                signal(SIGCHLD, SIG_IGN); /* ignore child */
                signal(SIGTSTP, SIG_IGN); /* ignore tty signals */
                signal(SIGTTOU, SIG_IGN);
@@ -353,16 +369,15 @@ int main(int argc, char **argv)
     Sharedmemory_init( bindport, bindport6 );
 #endif
 
-#ifdef POSIX_PRIORITY_SCHEDULING
-               if (realtime)
-                       setscheduler();
-#endif
+               if(!nodaemon) {
+                       /* SSL and scheduling is setup, we can drop privileges now */
+                       switch_user();
 
-               switch_user();
-               /* Reopen log file. If user switch results in access denied, we catch
-                * it early.
-                */
-               Log_reset();
+                       /* Reopen log file. If user switch results in access denied, we catch
+                        * it early.
+                        */
+                       Log_reset();
+               }
 
                Server_run();