Need to initialize getloadavg() as root in the daemon when
authorPhilip Hazel <ph10@hermes.cam.ac.uk>
Tue, 4 Jan 2005 10:37:55 +0000 (10:37 +0000)
committerPhilip Hazel <ph10@hermes.cam.ac.uk>
Tue, 4 Jan 2005 10:37:55 +0000 (10:37 +0000)
deliver_drop_privilege is set, for the benefit of the queue runner.

doc/doc-txt/ChangeLog
src/src/daemon.c

index 6796a00b5dede6f5c7b9f1cc4000316a03d487ee..297303ad6ed2bd0477266d3d06201defe8fa2f00 100644 (file)
@@ -1,4 +1,4 @@
-$Cambridge: exim/doc/doc-txt/ChangeLog,v 1.60 2005/01/04 10:25:58 ph10 Exp $
+$Cambridge: exim/doc/doc-txt/ChangeLog,v 1.61 2005/01/04 10:37:55 ph10 Exp $
 
 Change log file for Exim from version 4.21
 -------------------------------------------
@@ -275,6 +275,12 @@ Exim version 4.50
 62. Configuration update for GNU/Hurd and variations. Updated Makefile-GNU and
     os.h-GNU, and added configuration files for GNUkFreeBSD and GNUkNetBSD.
 
+63. The daemon start-up calls getloadavg() while still root for those OS that
+    need the first call to be done as root, but it missed one case: when
+    deliver_queue_load_max is set with deliver_drop_privilege. This is
+    necessary for the benefit of the queue runner, because there is no re-exec
+    when deliver_drop_privilege is set.
+
 
 Exim version 4.43
 -----------------
index dfd781116c019f1ae08bcfd42db4bec46f9c76b6..1c274d732008b0cda04087211aefb8bd098946eb 100644 (file)
@@ -1,4 +1,4 @@
-/* $Cambridge: exim/src/src/daemon.c,v 1.4 2005/01/04 10:00:42 ph10 Exp $ */
+/* $Cambridge: exim/src/src/daemon.c,v 1.5 2005/01/04 10:37:55 ph10 Exp $ */
 
 /*************************************************
 *     Exim - an Internet mail transport agent    *
@@ -898,7 +898,9 @@ if (daemon_listen)
   order to perform an "open" on the kernel memory file). */
 
   #ifdef LOAD_AVG_NEEDS_ROOT
-  if (queue_only_load >= 0 || smtp_load_reserve >= 0) (void)os_getloadavg();
+  if (queue_only_load >= 0 || smtp_load_reserve >= 0 ||
+       (deliver_queue_load_max >= 0 && deliver_drop_privilege)) 
+    (void)os_getloadavg();
   #endif
 
   /* If -oX was used, disable the writing of a pid file unless -oP was