Previously if set to daemonize, set to run with realtime priority, and
set to drop privileges, umurmur would try to set the scheduling policy
after dropping privileges, which would fail as unprivileged processes
are not allowed to set a realtime scheduling policy as of Linux 2.6.12.
Fixes #94.
if (pidfile != NULL)
lockfile(pidfile);
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
+
switch_user();
/* Reopen log file. If user switch results in access denied, we catch
switch_user();
/* Reopen log file. If user switch results in access denied, we catch
+#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);
signal(SIGCHLD, SIG_IGN); /* ignore child */
signal(SIGTSTP, SIG_IGN); /* ignore tty signals */
signal(SIGTTOU, SIG_IGN);
Sharedmemory_init( bindport, bindport6 );
#endif
Sharedmemory_init( bindport, bindport6 );
#endif
-#ifdef POSIX_PRIORITY_SCHEDULING
- if (realtime)
- setscheduler();
-#endif
-
Server_run();
#ifdef USE_SHAREDMEMORY_API
Server_run();
#ifdef USE_SHAREDMEMORY_API