When checking for a message's continued existence, exim_tidydb was not
authorPhilip Hazel <ph10@hermes.cam.ac.uk>
Mon, 20 Dec 2004 12:29:10 +0000 (12:29 +0000)
committerPhilip Hazel <ph10@hermes.cam.ac.uk>
Mon, 20 Dec 2004 12:29:10 +0000 (12:29 +0000)
looking in the split spool subdirectories.

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

index 181fa93..a06b29b 100644 (file)
@@ -1,4 +1,4 @@
-$Cambridge: exim/doc/doc-txt/ChangeLog,v 1.44 2004/12/20 11:46:21 ph10 Exp $
+$Cambridge: exim/doc/doc-txt/ChangeLog,v 1.45 2004/12/20 12:29:10 ph10 Exp $
 
 Change log file for Exim from version 4.21
 -------------------------------------------
 
 Change log file for Exim from version 4.21
 -------------------------------------------
@@ -190,6 +190,11 @@ Exim version 4.50
 46. Reset the locale to "C" after calling embedded Perl, in case it was changed
     (this can affect the format of dates).
 
 46. Reset the locale to "C" after calling embedded Perl, in case it was changed
     (this can affect the format of dates).
 
+47. exim_tidydb, when checking for the continued existence of a message for
+    which it has found a message-specific retry record, was not finding
+    messages that were in split spool directories. Consequently, it was
+    deleting retry records that should have stayed in existence.
+
 
 Exim version 4.43
 -----------------
 
 Exim version 4.43
 -----------------
index dd40174..c193d38 100644 (file)
@@ -1,4 +1,4 @@
-/* $Cambridge: exim/src/src/exim_dbutil.c,v 1.1 2004/10/07 10:39:01 ph10 Exp $ */
+/* $Cambridge: exim/src/src/exim_dbutil.c,v 1.2 2004/12/20 12:29:10 ph10 Exp $ */
 
 /*************************************************
 *     Exim - an Internet mail transport agent    *
 
 /*************************************************
 *     Exim - an Internet mail transport agent    *
@@ -1246,8 +1246,12 @@ while (keychain != NULL)
 
     if (Ustat(buffer, &statbuf) != 0)
       {
 
     if (Ustat(buffer, &statbuf) != 0)
       {
-      dbfn_delete(dbm, key);
-      printf("deleted %s (no message)\n", key);
+      sprintf(CS(buffer + path_len), "%c/%s-D", id[5], id);
+      if (Ustat(buffer, &statbuf) != 0)
+        {
+        dbfn_delete(dbm, key);
+        printf("deleted %s (no message)\n", key);
+        }
       }
     }
   }
       }
     }
   }