ph10 2004/10/14 12:21:03 BST
Modified files:
exim-doc/doc-txt ChangeLog
exim-src/src exim.c version.c
Log:
Arrange to panic-die if setitimer() ever fails. Version number upped in
readiness for next release.
Revision Changes Path
1.4 +4 -0 exim/exim-doc/doc-txt/ChangeLog
1.2 +7 -2 exim/exim-src/src/exim.c
1.2 +1 -1 exim/exim-src/src/version.c
Index: ChangeLog
===================================================================
RCS file: /home/cvs/exim/exim-doc/doc-txt/ChangeLog,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- ChangeLog 11 Oct 2004 13:24:19 -0000 1.3
+++ ChangeLog 14 Oct 2004 11:21:02 -0000 1.4
@@ -1,4 +1,4 @@
-$Cambridge: exim/exim-doc/doc-txt/ChangeLog,v 1.3 2004/10/11 13:24:19 ph10 Exp $
+$Cambridge: exim/exim-doc/doc-txt/ChangeLog,v 1.4 2004/10/14 11:21:02 ph10 Exp $
Change log file for Exim from version 4.21
-------------------------------------------
@@ -11,6 +11,10 @@
2. Change 4.43/35 introduced a bug: if quota_filecount was set, the
computation of the current number of files was incorrect.
+
+ 3. Closing a stable door: arrange to panic-die if setitimer() ever fails. The
+ bug fixed in 4.43/37 would have been diagnosed quickly if this had been in
+ place.
Exim version 4.43
Index: exim.c
===================================================================
RCS file: /home/cvs/exim/exim-src/src/exim.c,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- exim.c 7 Oct 2004 10:39:01 -0000 1.1
+++ exim.c 14 Oct 2004 11:21:02 -0000 1.2
@@ -1,4 +1,4 @@
-/* $Cambridge: exim/exim-src/src/exim.c,v 1.1 2004/10/07 10:39:01 ph10 Exp $ */
+/* $Cambridge: exim/exim-src/src/exim.c,v 1.2 2004/10/14 11:21:02 ph10 Exp $ */
/*************************************************
* Exim - an Internet mail transport agent *
@@ -196,7 +196,10 @@
/* This function is called by millisleep() and exim_wait_tick() to wait for a
period of time that may include a fraction of a second. The coding is somewhat
-tedious...
+tedious. We do not expect setitimer() ever to fail, but if it does, the process
+will wait for ever, so we panic in this instance. (There was a case of this
+when a bug in a function that calls milliwait() caused it to pass invalid data.
+That's when I added the check. :-)
Argument: an itimerval structure containing the interval
Returns: nothing
@@ -210,7 +213,9 @@
(void)sigemptyset(&sigmask); /* Empty mask */
(void)sigaddset(&sigmask, SIGALRM); /* Add SIGALRM */
(void)sigprocmask(SIG_BLOCK, &sigmask, &old_sigmask); /* Block SIGALRM */
-(void)setitimer(ITIMER_REAL, itval, NULL); /* Start timer */
+if (setitimer(ITIMER_REAL, itval, NULL) < 0) /* Start timer */
+ log_write(0, LOG_MAIN|LOG_PANIC_DIE,
+ "setitimer() failed: %s", strerror(errno));
(void)sigfillset(&sigmask); /* All signals */
(void)sigdelset(&sigmask, SIGALRM); /* Remove SIGALRM */
(void)sigsuspend(&sigmask); /* Until SIGALRM */
Index: version.c
===================================================================
RCS file: /home/cvs/exim/exim-src/src/version.c,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- version.c 7 Oct 2004 10:39:01 -0000 1.1
+++ version.c 14 Oct 2004 11:21:02 -0000 1.2
@@ -1,4 +1,4 @@
-/* $Cambridge: exim/exim-src/src/version.c,v 1.1 2004/10/07 10:39:01 ph10 Exp $ */
+/* $Cambridge: exim/exim-src/src/version.c,v 1.2 2004/10/14 11:21:02 ph10 Exp $ */
/*************************************************
* Exim - an Internet mail transport agent *
@@ -12,7 +12,7 @@
#include "exim.h"
-#define THIS_VERSION "4.43"
+#define THIS_VERSION "4.44"
/* The header file cnumber.h contains a single line containing the