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 181fa93bb4ddf2458a28cc5ae5f988643908a177..a06b29b4908ad4d5c55ac672e1da089a26dd6042 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 dd401741d8fef4086294cf0624bd4bdf0fbae8eb..c193d38ae353cf31d83d375ee09c0ce8ed078b54 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);
+        }
       }
     }
   }
       }
     }
   }