[exim-cvs] Hintsdb sqlite: use transaction rather than file …

Góra strony
Delete this message
Reply to this message
Autor: Exim Git Commits Mailing List
Data:  
Dla: exim-cvs
Temat: [exim-cvs] Hintsdb sqlite: use transaction rather than file lock
Gitweb: https://git.exim.org/exim.git/commitdiff/5bb1dfe41e40fa45f85305ccbd7d4533a229d3fc
Commit:     5bb1dfe41e40fa45f85305ccbd7d4533a229d3fc
Parent:     28c8a333bbff8e7a8796e047e4f921fdb89d710f
Author:     Jeremy Harris <jgh146exb@???>
AuthorDate: Wed Jun 12 22:37:15 2024 +0100
Committer:  Jeremy Harris <jgh146exb@???>
CommitDate: Wed Jun 12 22:37:15 2024 +0100


    Hintsdb sqlite: use transaction rather than file lock
---
 src/src/dbfn.c                               |  56 +++++++++----
 src/src/exim_dbmbuild.c                      |  32 ++++----
 src/src/exim_dbutil.c                        |  81 ++++++++++---------
 src/src/hintsdb.h                            | 114 +++++++++++++++++++++------
 src/src/macro_predef.c                       |  12 +++
 src/src/queue.c                              |  28 +++----
 src/src/retry.c                              |   2 +-
 src/src/transport.c                          |  10 ++-
 test/confs/0615                              |   2 +-
 test/runtest                                 |  10 ++-
 test/scripts/0000-Basic/0038                 |   4 +-
 test/scripts/0000-Basic/0615                 |   5 +-
 test/scripts/{2300-DBM => 2301-DBM-BDB}/2301 |   0
 test/scripts/{2300-DBM => 2301-DBM-BDB}/2302 |   0
 test/scripts/2301-DBM-BDB/REQUIRES           |   2 +
 test/stderr/0037                             |   3 -
 test/stderr/0264                             |   2 -
 test/stderr/0275                             |   4 -
 test/stderr/0278                             |   4 -
 test/stderr/0315                             |   4 -
 test/stderr/0332                             |   7 --
 test/stderr/0333                             |   6 --
 test/stderr/0357                             |  10 ---
 test/stderr/0358                             |   6 --
 test/stderr/0360                             |   6 --
 test/stderr/0361                             |   8 --
 test/stderr/0374                             |  19 -----
 test/stderr/0375                             |  34 --------
 test/stderr/0377                             |  14 ----
 test/stderr/0378                             |  11 ---
 test/stderr/0379                             |   7 --
 test/stderr/0380                             |   3 -
 test/stderr/0386                             |   8 --
 test/stderr/0388                             |  18 +----
 test/stderr/0398                             |  16 ++--
 test/stderr/0402                             |  14 ----
 test/stderr/0403                             |  12 ---
 test/stderr/0404                             |  10 ---
 test/stderr/0408                             |   4 -
 test/stderr/0426                             |   4 -
 test/stderr/0432                             |  16 ++--
 test/stderr/0487                             |   4 -
 test/stderr/0529                             |   7 --
 test/stderr/0543                             |   4 -
 test/stderr/0554                             |   7 --
 test/stderr/0628                             |   4 -
 test/stderr/2600                             |   4 -
 test/stderr/2610                             |   4 -
 test/stderr/2620                             |   4 -
 test/stderr/5004                             |   6 --
 test/stderr/5005                             |  32 ++------
 test/stderr/5006                             |   4 -
 test/stdout/0543                             |   2 +-
 53 files changed, 254 insertions(+), 436 deletions(-)


diff --git a/src/src/dbfn.c b/src/src/dbfn.c
index 88b4d8920..2b5ec908b 100644
--- a/src/src/dbfn.c
+++ b/src/src/dbfn.c
@@ -61,23 +61,32 @@ Users:
 *          Open and lock a database file         *
 *************************************************/


+/* Ensure the directory for the DB is present */
+
+static inline void
+db_dir_make(BOOL panic)
+{
+(void) directory_make(spool_directory, US"db", EXIMDB_DIRECTORY_MODE, panic);
+}
+
+
/* Lock a file to protect the DB. Return TRUE for success */

static inline BOOL
lockfile_take(open_db * dbblock, const uschar * filename, BOOL rdonly, BOOL panic)
{
flock_t lock_data;
-int rc;
+int rc, * fdp = &dbblock->lockfd;

priv_drop_temp(exim_uid, exim_gid);
-if ((dbblock->lockfd = Uopen(filename, O_RDWR, EXIMDB_LOCKFILE_MODE)) < 0)
+if ((*fdp = Uopen(filename, O_RDWR, EXIMDB_LOCKFILE_MODE)) < 0)
{
- (void)directory_make(spool_directory, US"db", EXIMDB_DIRECTORY_MODE, panic);
- dbblock->lockfd = Uopen(filename, O_RDWR|O_CREAT, EXIMDB_LOCKFILE_MODE);
+ db_dir_make(panic);
+ *fdp = Uopen(filename, O_RDWR|O_CREAT, EXIMDB_LOCKFILE_MODE);
}
priv_restore();

-if (dbblock->lockfd < 0)
+if (*fdp < 0)
   {
   log_write(0, LOG_MAIN, "%s",
     string_open_failed("database lock file %s", filename));
@@ -96,7 +105,7 @@ DEBUG(D_hints_lookup|D_retry|D_route|D_deliver)


sigalrm_seen = FALSE;
ALARM(EXIMDB_LOCK_TIMEOUT);
-rc = fcntl(dbblock->lockfd, F_SETLKW, &lock_data);
+rc = fcntl(*fdp, F_SETLKW, &lock_data);
ALARM_CLR(0);

 if (sigalrm_seen) errno = ETIMEDOUT;
@@ -105,7 +114,7 @@ if (rc < 0)
   log_write(0, LOG_MAIN|LOG_PANIC, "Failed to get %s lock for %s: %s",
     rdonly ? "read" : "write", filename,
     errno == ETIMEDOUT ? "timed out" : strerror(errno));
-  (void)close(dbblock->lockfd);
+  (void)close(*fdp); *fdp = -1;
   errno = 0;       /* Indicates locking failure */
   return FALSE;
   }
@@ -137,7 +146,7 @@ dbfn_open(const uschar * name, int flags, open_db * dbblock,
   BOOL lof, BOOL panic)
 {
 int rc, save_errno;
-BOOL read_only = flags & O_RDONLY;
+flock_t lock_data;
 uschar dirname[PATHLEN], filename[PATHLEN];


DEBUG(D_hints_lookup) acl_level++;
@@ -159,15 +168,20 @@ snprintf(CS dirname, sizeof(dirname), "%s/db", spool_directory);
snprintf(CS filename, sizeof(filename), "%s/%s.lockfile", dirname, name);

 dbblock->lockfd = -1;
-if (!lockfile_take(dbblock, filename, flags == O_RDONLY, panic))
+if (!exim_lockfile_needed())
+  db_dir_make(panic);
+else
   {
-  DEBUG(D_hints_lookup) acl_level--;
-  return NULL;
+  if (!lockfile_take(dbblock, filename, flags == O_RDONLY, panic))
+    {
+    DEBUG(D_hints_lookup) acl_level--;
+    return NULL;
+    }
   }


-/* At this point we have an opened and locked separate lock file,
-that is, exclusive access to the database, so we can go ahead and open it. If we
-are expected to create it, don't do so at first, again so that we can detect
+/* At this point we have an opened and locked separate lock file, that is,
+exclusive access to the database, so we can go ahead and open it. If we are
+expected to create it, don't do so at first, again so that we can detect
 whether we need to change its ownership (see comments about the lock file
 above.) There have been regular reports of crashes while opening hints
 databases - often this is caused by non-matching db.h and the library. To make
@@ -203,6 +217,7 @@ if (!dbblock->dbptr)
       debug_printf_indent("%s\n", CS string_open_failed("DB file %s",
           filename));
   (void)close(dbblock->lockfd);
+  dbblock->lockfd = -1;
   errno = save_errno;
   DEBUG(D_hints_lookup) acl_level--;
   return NULL;
@@ -228,7 +243,7 @@ return dbblock;
 *************************************************/


/* Closing a file automatically unlocks it, so after closing the database, just
-close the lock file.
+close the lock file if there was one.

 Argument: a pointer to an open database block
 Returns:  nothing
@@ -237,10 +252,17 @@ Returns:  nothing
 void
 dbfn_close(open_db *dbblock)
 {
+int * fdp = &dbblock->lockfd;
+
 exim_dbclose(dbblock->dbptr);
-(void)close(dbblock->lockfd);
+if (*fdp >= 0) (void)close(*fdp);
 DEBUG(D_hints_lookup)
-  { debug_printf_indent("closed hints database and lockfile\n"); acl_level--; }
+  {
+  debug_printf_indent("closed hints database%s\n",
+              *fdp < 0 ? "" : " and lockfile");
+  acl_level--;
+  }
+*fdp = -1;
 }



diff --git a/src/src/exim_dbmbuild.c b/src/src/exim_dbmbuild.c
index d68333079..d07c3e024 100644
--- a/src/src/exim_dbmbuild.c
+++ b/src/src/exim_dbmbuild.c
@@ -76,14 +76,6 @@ uschar *        queue_name;
 BOOL            split_spool_directory;



-/* These introduced by the taintwarn handling */
-rmark
-store_mark_3(const char *func, int linenumber)
-{ return NULL; }
-#ifdef ALLOW_INSECURE_TAINTED_DATA
-BOOL    allow_insecure_tainted_data;
-#endif
-
 /******************************************************************************/



@@ -177,7 +169,7 @@ BOOL lowercase = TRUE;
BOOL warn = TRUE;
BOOL duperr = TRUE;
BOOL lastdup = FALSE;
-#if !defined (USE_DB) && !defined(USE_TDB) && !defined(USE_GDBM)
+#if !defined (USE_DB) && !defined(USE_TDB) && !defined(USE_GDBM) && !defined(USE_SQLITE)
int is_db = 0;
struct stat statbuf;
#endif
@@ -221,7 +213,7 @@ else if (!(f = fopen(argv[arg], "rb")))
/* By default Berkeley db does not put extensions on... which
can be painful! */

-#if defined(USE_DB) || defined(USE_TDB) || defined(USE_GDBM)
+#if defined(USE_DB) || defined(USE_TDB) || defined(USE_GDBM) && !defined(USE_SQLITE)
if (Ustrcmp(argv[arg], argv[arg+1]) == 0)
{
printf("exim_dbmbuild: input and output filenames are the same\n");
@@ -261,7 +253,7 @@ if (!(d = exim_dbopen(temp_dbmname, dirname, O_RDWR|O_CREAT|O_EXCL, 0644)))
/* Unless using native db calls, see if we have created <name>.db; if not,
assume .dir & .pag */

-#if !defined(USE_DB) && !defined(USE_TDB) && !defined(USE_GDBM)
+#if !defined(USE_DB) && !defined(USE_TDB) && !defined(USE_GDBM) && !defined(USE_SQLITE)
 sprintf(CS real_dbmname, "%s.db", temp_dbmname);
 is_db = Ustat(real_dbmname, &statbuf) == 0;
 #endif
@@ -333,7 +325,8 @@ while (Ufgets(line, max_insize, f) != NULL)
       exim_datum_data_set(&content, buffer);
       exim_datum_size_set(&content, bptr - buffer + add_zero);


-      switch(rc = exim_dbputb(d, &key, &content))
+      rc = exim_dbputb(d, &key, &content);
+      switch(rc)
         {
         case EXIM_DBPUTB_OK:
       count++;
@@ -423,7 +416,8 @@ if (started)
   exim_datum_data_set(&content, buffer);
   exim_datum_size_set(&content, bptr - buffer + add_zero);


-  switch(rc = exim_dbputb(d, &key, &content))
+  rc = exim_dbputb(d, &key, &content);
+  switch(rc)
     {
     case EXIM_DBPUTB_OK:
     count++;
@@ -462,7 +456,7 @@ if (yield == 0 || yield == 1)
     printf("%d duplicate key%s \n", dupcount, (dupcount > 1)? "s" : "");
     }


-  #if defined(USE_DB) || defined(USE_TDB) || defined(USE_GDBM)
+#if defined(USE_DB) || defined(USE_TDB) || defined(USE_GDBM) || defined(USE_SQLITE)
   Ustrcpy(real_dbmname, temp_dbmname);
   Ustrcpy(buffer, US argv[arg+1]);
   if (Urename(real_dbmname, buffer) != 0)
@@ -470,7 +464,7 @@ if (yield == 0 || yield == 1)
     printf("Unable to rename %s as %s\n", real_dbmname, buffer);
     return 1;
     }
-  #else
+#else


/* Rename a single .db file */

@@ -506,7 +500,7 @@ if (yield == 0 || yield == 1)
       }
     }


- #endif /* USE_DB || USE_TDB || USE_GDBM */
+#endif /* USE_DB || USE_TDB || USE_GDBM || USE_SQLITE */
}

 /* Otherwise unlink the temporary files. */
@@ -514,7 +508,7 @@ if (yield == 0 || yield == 1)
 else
   {
   printf("dbmbuild abandoned\n");
-#if defined(USE_DB) || defined(USE_TDB) || defined(USE_GDBM)
+#if defined(USE_DB) || defined(USE_TDB) || defined(USE_GDBM) || defined(USE_SQLITE)
   /* We created it, so safe to delete despite the name coming from outside */
   /* coverity[tainted_string] */
   Uunlink(temp_dbmname);
@@ -531,10 +525,12 @@ else
     sprintf(CS real_dbmname, "%s.pag", temp_dbmname);
     Uunlink(real_dbmname);
     }
-#endif /* USE_DB || USE_TDB */
+#endif /* USE_DB || USE_TDB || USE_GDBM || USE_SQLITE */
   }


return yield;
}

 /* End of exim_dbmbuild.c */
+/* se aw ai sw=2
+*/
diff --git a/src/src/exim_dbutil.c b/src/src/exim_dbutil.c
index c466ae380..e7d523e88 100644
--- a/src/src/exim_dbutil.c
+++ b/src/src/exim_dbutil.c
@@ -81,11 +81,6 @@ uschar *        queue_name;
 BOOL            split_spool_directory;



-/* These introduced by the taintwarn handling */
-#ifdef ALLOW_INSECURE_TAINTED_DATA
-BOOL    allow_insecure_tainted_data;
-#endif
-
 /******************************************************************************/



@@ -306,38 +301,42 @@ if (  asprintf(CSS &dirname, "%s/db", spool_directory) < 0
    || asprintf(CSS &filename, "%s/%s.lockfile", dirname, name) < 0)
   return NULL;


-if ((dbblock->lockfd = Uopen(filename, flags, 0)) < 0)
+dbblock->lockfd = -1;
+if (exim_lockfile_needed())
   {
-  printf("** Failed to open database lock file %s: %s\n", filename,
-    strerror(errno));
-  return NULL;
-  }
+  if ((dbblock->lockfd = Uopen(filename, flags, 0)) < 0)
+    {
+    printf("** Failed to open database lock file %s: %s\n", filename,
+      strerror(errno));
+    return NULL;
+    }


-/* Now we must get a lock on the opened lock file; do this with a blocking
-lock that times out. */
+ /* Now we must get a lock on the opened lock file; do this with a blocking
+ lock that times out. */

-lock_data.l_type = read_only ? F_RDLCK : F_WRLCK;
-lock_data.l_whence = lock_data.l_start = lock_data.l_len = 0;
+ lock_data.l_type = read_only ? F_RDLCK : F_WRLCK;
+ lock_data.l_whence = lock_data.l_start = lock_data.l_len = 0;

-sigalrm_seen = FALSE;
-os_non_restarting_signal(SIGALRM, sigalrm_handler);
-ALARM(EXIMDB_LOCK_TIMEOUT);
-rc = fcntl(dbblock->lockfd, F_SETLKW, &lock_data);
-ALARM_CLR(0);
+ sigalrm_seen = FALSE;
+ os_non_restarting_signal(SIGALRM, sigalrm_handler);
+ ALARM(EXIMDB_LOCK_TIMEOUT);
+ rc = fcntl(dbblock->lockfd, F_SETLKW, &lock_data);
+ ALARM_CLR(0);

-if (sigalrm_seen) errno = ETIMEDOUT;
-if (rc < 0)
-  {
-  printf("** Failed to get %s lock for %s: %s",
-    read_only ? "read" : "write",
-    filename,
-    errno == ETIMEDOUT ? "timed out" : strerror(errno));
-  (void)close(dbblock->lockfd);
-  return NULL;
-  }
+  if (sigalrm_seen) errno = ETIMEDOUT;
+  if (rc < 0)
+    {
+    printf("** Failed to get %s lock for %s: %s",
+      read_only ? "read" : "write",
+      filename,
+      errno == ETIMEDOUT ? "timed out" : strerror(errno));
+    (void)close(dbblock->lockfd);
+    return NULL;
+    }


-/* At this point we have an opened and locked separate lock file, that is,
-exclusive access to the database, so we can go ahead and open it. */
+ /* At this point we have an opened and locked separate lock file, that is,
+ exclusive access to the database, so we can go ahead and open it. */
+ }

if (asprintf(CSS &filename, "%s/%s", dirname, name) < 0) return NULL;

@@ -345,15 +344,15 @@ if (flags & O_RDWR) flags |= O_CREAT;

 if (!(dbblock->dbptr = exim_dbopen(filename, dirname, flags, 0)))
   {
-  printf("** Failed to open DBM file %s for %s:\n   %s%s\n", filename,
-    read_only? "reading" : "writing", strerror(errno),
-    #ifdef USE_DB
+  printf("** Failed to open DBM file %s for %s: %s%s\n", filename,
+    read_only ? "reading" : "writing", strerror(errno),
+#ifdef USE_DB
     " (or Berkeley DB error while opening)"
-    #else
+#else
     ""
-    #endif
+#endif
     );
-  (void)close(dbblock->lockfd);
+  if (dbblock->lockfd >= 0) (void)close(dbblock->lockfd);
   return NULL;
   }


@@ -368,17 +367,17 @@ return dbblock;
*************************************************/

/* Closing a file automatically unlocks it, so after closing the database, just
-close the lock file.
+close the lock file if there was one.

Argument: a pointer to an open database block
Returns: nothing
*/

void
-dbfn_close(open_db *dbblock)
+dbfn_close(open_db * dbp)
{
-exim_dbclose(dbblock->dbptr);
-(void)close(dbblock->lockfd);
+exim_dbclose(dbp->dbptr);
+if (dbp->lockfd >= 0) (void) close(dbp->lockfd);
}


diff --git a/src/src/hintsdb.h b/src/src/hintsdb.h
index 12c370dba..c5a856abc 100644
--- a/src/src/hintsdb.h
+++ b/src/src/hintsdb.h
@@ -23,14 +23,15 @@ binary blobs.

 The API is:
   Functions:
-    exim_dbopen        O_RDONLY/O_RDWR, optionally OR'd with O_CREAT
+    exim_lockfile_needed     API semantics predicate
+    exim_dbopen
     exim_dbclose
     exim_dbget
     exim_dbput
-    exim_dbputb        (non-overwriting put)
+    exim_dbputb            non-overwriting put
     exim_dbdel
     exim_dbcreate_cursor
-    exim_dbscan        (get, and bump cursor)
+    exim_dbscan            get, and bump cursor
     exim_dbdelete_cursor
     exim_datum_init
     exim_datum_size_get/set
@@ -88,6 +89,12 @@ required by Exim's process transisitions)?


# /* Access functions */

+static inline BOOL
+exim_lockfile_needed(void)
+{
+return FALSE;    /* We do transaction; no extra locking needed */
+}
+
 /* EXIM_DBOPEN - return pointer to an EXIM_DB, NULL if failed */
 static inline EXIM_DB *
 exim_dbopen__(const uschar * name, const uschar * dirname, int flags,
@@ -99,10 +106,13 @@ if (flags & O_CREAT) sflags |= SQLITE_OPEN_CREATE;
 if ((ret = sqlite3_open_v2(CCS name, &dbp, sflags, NULL)) == SQLITE_OK)
   {
   sqlite3_busy_timeout(dbp, 5000);
-  if (flags & O_CREAT)
-    ret == sqlite3_exec(dbp,
+  ret = sqlite3_exec(dbp, "BEGIN TRANSACTION;", NULL, NULL, NULL);
+  if (ret == SQLITE_OK && flags & O_CREAT)
+    ret = sqlite3_exec(dbp,
         "CREATE TABLE IF NOT EXISTS tbl (ky TEXT PRIMARY KEY, dat BLOB);",
         NULL, NULL, NULL);
+  if (ret != SQLITE_OK)
+    sqlite3_close(dbp);
   }
 //else
 //  fprintf(stderr, "sqlite3_open_v2: %s\n", sqlite3_errmsg(dbp));
@@ -134,7 +144,11 @@ if (sqlite3_step(statement) != SQLITE_ROW)
   }


res->len = sqlite3_column_bytes(statement, 0);
-res->data = store_get(res->len + 1, GET_TAINTED);
+# ifdef COMPILE_UTILITY
+res->data = malloc(res->len);
+# else
+res->data = store_get(res->len, GET_TAINTED);
+# endif
memcpy(res->data, sqlite3_column_blob(statement, 0), res->len);
res->data[res->len] = '\0';
/* fprintf(stderr, "res %d bytes: '%.*s'\n", (int)res->len, (int)res->len, res->data); */
@@ -173,23 +187,28 @@ return ret;
static inline int
exim_s_dbp(EXIM_DB * dbp, EXIM_DATUM * key, EXIM_DATUM * data, const uschar * alt)
{
+int hlen = data->len * 2, off = 0, res;
# define FMT "INSERT OR %s INTO tbl (ky,dat) VALUES ('%.*s', X'%.*s');"
-uschar * hex = store_get(data->len * 2, data->data), * qry;
-int res;
+# ifdef COMPILE_UTILITY
+uschar * hex = malloc(hlen+1);
+# else
+uschar * hex = store_get(hlen+1, data->data);
+# endif
+uschar * qry;

-for (const uschar * s = data->data, * t = s + data->len; s < t; s++)
- sprintf(CS hex + 2 * (s - data->data), "%02X", *s);
+for (const uschar * s = data->data, * t = s + data->len; s < t; s++, off += 2)
+ sprintf(CS hex + off, "%02X", *s);

 # ifdef COMPILE_UTILITY
-res = snprintf(NULL, 0, FMT,
-        alt, (int) key->len, key->data, (int)data->len * 2, hex);
+res = snprintf(CS hex, 0, FMT, alt, (int) key->len, key->data, hlen, hex);
 qry = malloc(res);
-snprintf(CS qry, res, FMT, alt, (int) key->len, key->data, (int)data->len * 2, hex);
+snprintf(CS qry, res, FMT, alt, (int) key->len, key->data, hlen, hex);
 /* fprintf(stderr, "exim_s_dbp(%s)\n", qry); */
 res = sqlite3_exec(dbp, CS qry, NULL, NULL, NULL);
 free(qry);
+free(hex);
 # else
-qry = string_sprintf(FMT, alt, (int) key->len, key->data, (int)data->len * 2, hex);
+qry = string_sprintf(FMT, alt, (int) key->len, key->data, hlen, hex);
 /* fprintf(stderr, "exim_s_dbp(%s)\n", qry); */
 res = sqlite3_exec(dbp, CS qry, NULL, NULL, NULL);
 /* fprintf(stderr, "exim_s_dbp res %d\n", res); */
@@ -231,7 +250,7 @@ uschar * qry;
 int res;


# ifdef COMPILE_UTILITY
-res = snprintf(NULL, 0, FMT, (int) key->len, key->data);
+res = snprintf(NULL, 0, FMT, (int) key->len, key->data); /* res excludes nul */
qry = malloc(res);
snprintf(CS qry, res, FMT, (int) key->len, key->data);
res = sqlite3_exec(dbp, CS qry, NULL, NULL, NULL);
@@ -252,7 +271,11 @@ return res;
static inline EXIM_CURSOR *
exim_dbcreate_cursor(EXIM_DB * dbp)
{
+# ifdef COMPILE_UTILITY
+EXIM_CURSOR * c = malloc(sizeof(int));
+# else
EXIM_CURSOR * c = store_malloc(sizeof(int));
+# endif
*c = 0;
return c;
}
@@ -269,8 +292,8 @@ int i;
BOOL ret;

# ifdef COMPILE_UTILITY
-qry = malloc(i = snprintf(NULL, 0, FMT, *cursor));
-snprintf(CS qry, i, FMT, *cursor);
+qry = malloc((i = snprintf(NULL, 0, FMT, *cursor)));
+snprintf(CS qry, i-1, FMT, *cursor);
/* fprintf(stderr, "exim_dbscan(%s)\n", qry); */
ret = exim_dbget__(dbp, qry, key);
free(qry);
@@ -289,13 +312,22 @@ return ret;
/* EXIM_DBDELETE_CURSOR - terminate scanning operation. */
static inline void
exim_dbdelete_cursor(EXIM_CURSOR * cursor)
-{ store_free(cursor); }
+{
+# ifdef COMPILE_UTILITY
+free(cursor);
+# else
+store_free(cursor);
+# endif
+}


/* EXIM_DBCLOSE */
static void
-exim_dbclose__(EXIM_DB * db)
-{ sqlite3_close(db); }
+exim_dbclose__(EXIM_DB * dbp)
+{
+(void) sqlite3_exec(dbp, "COMMIT TRANSACTION;", NULL, NULL, NULL);
+sqlite3_close(dbp);
+}


/* Datum access */
@@ -362,6 +394,12 @@ tdb_traverse to be called) */

/* Access functions */

+static inline BOOL
+exim_lockfile_needed(void)
+{
+return TRUE;
+}
+
/* EXIM_DBOPEN - return pointer to an EXIM_DB, NULL if failed */
static inline EXIM_DB *
exim_dbopen__(const uschar * name, const uschar * dirname, int flags,
@@ -402,7 +440,11 @@ exim_dbdel(EXIM_DB * dbp, EXIM_DATUM * key)
static inline EXIM_CURSOR *
exim_dbcreate_cursor(EXIM_DB * dbp)
{
+# ifdef COMPILE_UTILITY
+EXIM_CURSOR * c = malloc(sizeof(TDB_DATA));
+# else
EXIM_CURSOR * c = store_malloc(sizeof(TDB_DATA));
+# endif
c->dptr = NULL;
return c;
}
@@ -533,7 +575,13 @@ log_write(0, LOG_MAIN, "Berkeley DB error: %s", msg);



-/* Access functions */
+/* Access functions (BDB 4.1+) */
+
+static inline BOOL
+exim_lockfile_needed(void)
+{
+return TRUE;
+}

/* EXIM_DBOPEN - return pointer to an EXIM_DB, NULL if failed */
/* The API changed for DB 4.1. - and we also starting using the "env" with a
@@ -680,7 +728,13 @@ exim_datum_free(EXIM_DATUM * d)
/* Some text for messages */
# define EXIM_DBTYPE "db (v3/4)"

-/* Access functions */
+/* Access functions (BDB 3/4) */
+
+static inline BOOL
+exim_lockfile_needed(void)
+{
+return TRUE;
+}

/* EXIM_DBOPEN - return pointer to an EXIM_DB, NULL if failed */
static inline EXIM_DB *
@@ -827,7 +881,13 @@ typedef struct {

# define EXIM_DBTYPE "gdbm"

-/* Access functions */
+/* Access functions (gdbm) */
+
+static inline BOOL
+exim_lockfile_needed(void)
+{
+return TRUE;
+}

/* EXIM_DBOPEN - return pointer to an EXIM_DB, NULL if failed */
static inline EXIM_DB *
@@ -967,7 +1027,13 @@ the default is the NDBM interface (which seems to be a wrapper for GDBM) */

# define EXIM_DBTYPE "ndbm"

-/* Access functions */
+/* Access functions (ndbm) */
+
+static inline BOOL
+exim_lockfile_needed(void)
+{
+return TRUE;
+}

/* EXIM_DBOPEN - returns a EXIM_DB *, NULL if failed */
/* Check that the name given is not present. This catches
diff --git a/src/src/macro_predef.c b/src/src/macro_predef.c
index 5bea91228..29ecfdcc8 100644
--- a/src/src/macro_predef.c
+++ b/src/src/macro_predef.c
@@ -221,6 +221,18 @@ due to conflicts with other common macros. */
builtin_macro_create(US"_HAVE_XCLIENT");
#endif

+#ifdef USE_SQLITE
+ builtin_macro_create(US"_HAVE_HINTS_SQLITE");
+#elif defined(USE_TDB)
+ builtin_macro_create(US"_HAVE_HINTS_TDB");
+#elif defined(USE_DB)
+ builtin_macro_create(US"_HAVE_HINTS_BDB");
+#elif defined(USE_GDBM)
+ builtin_macro_create(US"_HAVE_HINTS_GDBM");
+#else
+ builtin_macro_create(US"_HAVE_HINTS_NDBM");
+#endif
+
#ifdef LOOKUP_LSEARCH
builtin_macro_create(US"_HAVE_LOOKUP_LSEARCH");
#endif
diff --git a/src/src/queue.c b/src/src/queue.c
index 6e72a33d5..a4afdcc98 100644
--- a/src/src/queue.c
+++ b/src/src/queue.c
@@ -394,20 +394,19 @@ f.queue_running = TRUE;

if (!recurse)
{
- uschar extras[8];
- uschar *p = extras;
+ uschar extras[8], * p = extras;

   if (q->queue_2stage)        *p++ = 'q';
   if (q->queue_run_first_delivery) *p++ = 'i';
   if (q->queue_run_force)    *p++ = 'f';
   if (q->deliver_force_thaw)    *p++ = 'f';
   if (q->queue_run_local)    *p++ = 'l';
-  *p = 0;
+  *p = '\0';


p = big_buffer;
p += sprintf(CS p, "pid=%d", (int)queue_run_pid);

-  if (extras[0] != 0)
+  if (*extras)
     p += sprintf(CS p, " -q%s", extras);


   if (deliver_selectstring)
@@ -444,6 +443,15 @@ if (deliver_selectstring_sender && f.deliver_selectstring_sender_regex)
   selectstring_regex_sender =
     regex_must_compile(deliver_selectstring_sender, MCS_CASELESS, FALSE);


+#ifndef DISABLE_TLS
+if (!queue_tls_init)
+  {
+  queue_tls_init = TRUE;
+  /* Preload TLS library info for smtp transports. */
+  tls_client_creds_reload(FALSE);
+  }
+#endif
+
 /* If the spool is split into subdirectories, we want to process it one
 directory at a time, so as to spread out the directory scanning and the
 delivering when there are lots of messages involved, except when
@@ -669,16 +677,6 @@ for (int i = queue_run_in_order ? -1 : 0;
     report_time_since(&timestamp_startup, US"queue msg selected");
 #endif


-#ifndef DISABLE_TLS
-    if (!queue_tls_init)
-      {
-      queue_tls_init = TRUE;
-      /* Preload TLS library info for smtp transports.  Once, and only if we
-      have a delivery to do. */
-      tls_client_creds_reload(FALSE);
-      }
-#endif
-
 single_item_retry:
     if ((pid = exim_fork(US"qrun-delivery")) == 0)
       {
@@ -1619,3 +1617,5 @@ else DEBUG(D_queue_run) debug_printf(" socket: %s\n", strerror(errno));
 #endif /*!COMPILE_UTILITY*/


 /* End of queue.c */
+/* vi: aw ai sw=2
+*/
diff --git a/src/src/retry.c b/src/src/retry.c
index f180c779e..9dfe1d587 100644
--- a/src/src/retry.c
+++ b/src/src/retry.c
@@ -857,7 +857,7 @@ for (int i = 0; i < 3; i++)
         retry_record->basic_errno = rti->basic_errno;
         retry_record->more_errno = rti->more_errno;
         Ustrncpy(retry_record->text, message, message_length);
-        retry_record->text[message_length] = 0;
+        retry_record->text[message_length] = 0;    /* nul-term string in db */


         DEBUG(D_retry)
           {
diff --git a/src/src/transport.c b/src/src/transport.c
index 6768e85de..b5ed563a5 100644
--- a/src/src/transport.c
+++ b/src/src/transport.c
@@ -1895,8 +1895,8 @@ while (1)
     }


/* we were not able to find an acceptable message, nor was there a
- * continuation record. So bug out, outer logic will clean this up.
- */
+ continuation record. So bug out, outer logic will clean this up.
+ */

   if (!bContinuation)
     {
@@ -1918,7 +1918,11 @@ if (host_length > 0)
   }


dbfn_close(dbm_file);
-DEBUG(D_transport) {acl_level--; debug_printf("transport_check_waiting: TRUE\n"); }
+DEBUG(D_transport)
+ {
+ acl_level--;
+ debug_printf("transport_check_waiting: TRUE (found %s)\n", new_message_id);
+ }
return TRUE;

retfalse:
diff --git a/test/confs/0615 b/test/confs/0615
index a1aae2acd..902e097ac 100644
--- a/test/confs/0615
+++ b/test/confs/0615
@@ -43,7 +43,7 @@ send_to_server:
hosts = 127.0.0.1
port = PORT_D
hosts_try_fastopen = :
- # assumes that HOSTIPV4 can sent to 127.0.0.1
+ # assumes that HOSTIPV4 can send to 127.0.0.1
interface = ${if eq {$sender_address_domain}{dustybelt.tld} {127.0.0.1}{HOSTIPV4}}

 # ----- Retry -----
diff --git a/test/runtest b/test/runtest
index 29ea66a9f..d205f9509 100755
--- a/test/runtest
+++ b/test/runtest
@@ -1055,6 +1055,9 @@ RESET_AFTER_EXTRA_LINE_READ:
     # remote IPv6 addrs vary
     s/^(Connection request from) \[.*:.*:.*\]$/$1 \[ipv6\]/;


+    # Hints DB use of lockfiles is provider-dependent
+    s/Failed to open \K(?:DBM|database lock) file (.*\/spool\/db\/[^.]*)(?:.lockfile)?(?=(?: for reading)?: No such file or directory$)/hintsdb $1/;
+
     # openssl version variances
   # Error lines on stdout from SSL contain process id values and file names.
   # They also contain a source file name and line number, which may vary from
@@ -1152,6 +1155,10 @@ RESET_AFTER_EXTRA_LINE_READ:
         )
           /x;


+    # Hints DB use of lockfiles is provider-dependent
+    next if /lock(?:ing|ed) .*\/spool\/db\/[^.]+\.lockfile$/;
+    s/closed hints database\K and lockfile$//;
+
     # Lines with a leading pid.  Only handle >= 4-digit PIDs to avoid converting SMTP respose codes
     s/^\s*(\d{4,})\s(?!(?:previous message|in\s|bytes remain in|SMTP accept process running))/new_value($1, "p%s", \$next_pid) . ' '/e;


@@ -1284,9 +1291,6 @@ RESET_AFTER_EXTRA_LINE_READ:
     # We invoke Exim with -D, so we hit this new message as of Exim 4.73:
     next if /^macros_trusted overridden to true by whitelisting/;


-    # Hints-db writes seem to have variable sizes for values
-    s/ dbfn_write: key=.+ datalen \K\d+$/NNN/;
-
     # We have to omit the localhost ::1 address so that all is well in
     # the IPv4-only case.


diff --git a/test/scripts/0000-Basic/0038 b/test/scripts/0000-Basic/0038
index 4d87755a2..5f6fd60c3 100644
--- a/test/scripts/0000-Basic/0038
+++ b/test/scripts/0000-Basic/0038
@@ -7,7 +7,7 @@ data
 Here is some data.
 .
 quit
-****               
+****
 exim -bh V4NET.9.8.7
 ehlo test.ex
 mail from:<>
@@ -16,7 +16,7 @@ data
 Here is some data.
 .
 quit
-****               
+****
 exim -bh V4NET.9.8.7 -DRRATELIMIT=0/1h/per_conn/strict -DDRATELIMIT=0/1h/per_conn/strict
 ehlo test.ex
 mail from:<>
diff --git a/test/scripts/0000-Basic/0615 b/test/scripts/0000-Basic/0615
index 1712c888f..b6f2663d7 100644
--- a/test/scripts/0000-Basic/0615
+++ b/test/scripts/0000-Basic/0615
@@ -2,10 +2,14 @@
 # Exim test configuration 0604
 #
 echo Note this takes 3 minutes to run
+# Build with -DMEASURE_TIMING if a performance test is wanted,
+# to lose the deliberate testsuite-mode delays.
+# Also, if a real 2-phase qrun is wanted, lose the queue_run_in_order
 #
 exim -DSERVER=server -bd -oX PORT_D
 ****
 #
+# Queue up 80 messages
 exim -bs
 helo test
 mail from:ralph@???
@@ -665,4 +669,3 @@ exim -qq
 #
 killdaemon
 no_msglog_check
-
diff --git a/test/scripts/2300-DBM/2301 b/test/scripts/2301-DBM-BDB/2301
similarity index 100%
rename from test/scripts/2300-DBM/2301
rename to test/scripts/2301-DBM-BDB/2301
diff --git a/test/scripts/2300-DBM/2302 b/test/scripts/2301-DBM-BDB/2302
similarity index 100%
rename from test/scripts/2300-DBM/2302
rename to test/scripts/2301-DBM-BDB/2302
diff --git a/test/scripts/2301-DBM-BDB/REQUIRES b/test/scripts/2301-DBM-BDB/REQUIRES
new file mode 100644
index 000000000..b96ff3144
--- /dev/null
+++ b/test/scripts/2301-DBM-BDB/REQUIRES
@@ -0,0 +1,2 @@
+lookup dbm
+feature _HAVE_HINTS_BDB
diff --git a/test/stderr/0037 b/test/stderr/0037
index 361f1639b..a3035c5c7 100644
--- a/test/stderr/0037
+++ b/test/stderr/0037
@@ -17,7 +17,6 @@ ssss bytes read from TESTSUITE/aux-var/0037.F
 data is an Exim filter program
 Filter: start of processing
 Filter: end of processing
-locking TESTSUITE/spool/db/retry.lockfile

>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

Considering: filter-userx@???
unique = filter-userx@???
@@ -58,7 +57,6 @@ userfilter router generated userx@???
routed by userfilter router
envelope to: filter-userx@???
transport: <none>
-locking TESTSUITE/spool/db/retry.lockfile
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

Considering: userx@???
unique = userx@???
@@ -111,7 +109,6 @@ After routing:
Remote deliveries:
Failed addresses:
Deferred addresses:
-locking TESTSUITE/spool/db/retry.lockfile
LOG: MAIN
=> userx <filter-userx@???> R=user_accept2 T=appendfile
LOG: MAIN
diff --git a/test/stderr/0264 b/test/stderr/0264
index ce7d530c0..f44b1e97f 100644
--- a/test/stderr/0264
+++ b/test/stderr/0264
@@ -27,7 +27,6 @@ body_linecount=0 message_linecount=8
DSN: set orcpt: flags: 0x0
Delivery address list:
rz.b@outside
-locking TESTSUITE/spool/db/retry.lockfile
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

Considering: rz.b@outside
unique = rz.b@outside
@@ -88,7 +87,6 @@ Succeeded addresses:
Failed addresses:
Deferred addresses:
rz.b@outside
-locking TESTSUITE/spool/db/retry.lockfile
*@outside in "^\*@r5domain.ex"? no (end of list)
*@outside in "userx@???"? no (end of list)
outside in "test.ex"? no (end of list)
diff --git a/test/stderr/0275 b/test/stderr/0275
index 6412f0e86..b51958a0a 100644
--- a/test/stderr/0275
+++ b/test/stderr/0275
@@ -259,8 +259,6 @@ body_linecount=0 message_linecount=8
DSN: set orcpt: flags: 0x0
Delivery address list:
userx@???
- locking TESTSUITE/spool/db/retry.lockfile
- locked TESTSUITE/spool/db/retry.lockfile
EXIM_DBOPEN: file <TESTSUITE/spool/db/retry> dir <TESTSUITE/spool/db> flags=O_RDONLY
returned from EXIM_DBOPEN: (nil)
failed to open DB file TESTSUITE/spool/db/retry: No such file or directory
@@ -460,8 +458,6 @@ After routing:
search_tidyup called
>>>>>>>>>>>>>>>> Local deliveries >>>>>>>>>>>>>>>>

--------> userx@??? <--------
- locking TESTSUITE/spool/db/retry.lockfile
- locked TESTSUITE/spool/db/retry.lockfile
EXIM_DBOPEN: file <TESTSUITE/spool/db/retry> dir <TESTSUITE/spool/db> flags=O_RDONLY
returned from EXIM_DBOPEN: (nil)
failed to open DB file TESTSUITE/spool/db/retry: No such file or directory
diff --git a/test/stderr/0278 b/test/stderr/0278
index 6aac99c7d..5e2fb38d9 100644
--- a/test/stderr/0278
+++ b/test/stderr/0278
@@ -164,8 +164,6 @@ body_linecount=0 message_linecount=8
DSN: set orcpt: flags: 0x0
Delivery address list:
CALLER@???
- locking TESTSUITE/spool/db/retry.lockfile
- locked TESTSUITE/spool/db/retry.lockfile
EXIM_DBOPEN: file <TESTSUITE/spool/db/retry> dir <TESTSUITE/spool/db> flags=O_RDONLY
returned from EXIM_DBOPEN: (nil)
failed to open DB file TESTSUITE/spool/db/retry: No such file or directory
@@ -260,8 +258,6 @@ After routing:
search_tidyup called
>>>>>>>>>>>>>>>> Local deliveries >>>>>>>>>>>>>>>>

--------> CALLER@??? <--------
- locking TESTSUITE/spool/db/retry.lockfile
- locked TESTSUITE/spool/db/retry.lockfile
EXIM_DBOPEN: file <TESTSUITE/spool/db/retry> dir <TESTSUITE/spool/db> flags=O_RDONLY
returned from EXIM_DBOPEN: (nil)
failed to open DB file TESTSUITE/spool/db/retry: No such file or directory
diff --git a/test/stderr/0315 b/test/stderr/0315
index 4105ca321..6ecc61f43 100644
--- a/test/stderr/0315
+++ b/test/stderr/0315
@@ -12,7 +12,6 @@ trusted user
admin user
dropping to exim gid; retaining priv uid
delivering 10HmaX-000000005vi-0000
-locking TESTSUITE/spool/db/retry.lockfile
no retry data available
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

 Considering: x@???
@@ -51,7 +50,6 @@ After routing:
     y@???
   Failed addresses:
   Deferred addresses:
-locking TESTSUITE/spool/db/retry.lockfile
 LOG: MAIN
   *> x@??? R=r1 T=t1 H=ten-1.test.ex [V4NET.0.0.1] C="delivery bypassed by -N option"
 LOG: MAIN
@@ -73,7 +71,6 @@ trusted user
 admin user
 dropping to exim gid; retaining priv uid
 delivering 10HmaY-000000005vi-0000
-locking TESTSUITE/spool/db/retry.lockfile
 no retry data available

>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

 Considering: x@???
@@ -134,7 +131,6 @@ After routing:
     y@???
   Failed addresses:
   Deferred addresses:
-locking TESTSUITE/spool/db/retry.lockfile
 LOG: MAIN
   *> x@??? R=r2 T=t1 H=ten-2.test.ex [V4NET.0.0.2] C="delivery bypassed by -N option"
 LOG: MAIN
diff --git a/test/stderr/0332 b/test/stderr/0332
index 0ffdc81c1..b717038d9 100644
--- a/test/stderr/0332
+++ b/test/stderr/0332
@@ -5,7 +5,6 @@ admin user
 dropping to exim gid; retaining priv uid
 LOG: queue_run MAIN
   Start queue run: pid=p1234
-locking TESTSUITE/spool/db/retry.lockfile

>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

 Considering: ok@???
 unique = ok@???
@@ -33,8 +32,6 @@ After routing:
     ok@???
   Failed addresses:
   Deferred addresses:
-locking TESTSUITE/spool/db/retry.lockfile
-locking TESTSUITE/spool/db/wait-t1.lockfile
 cmdlog: '220:EHLO:250-:MAIL|:RCPT|:DATA:250:250:354:.:250'
 LOG: MAIN
   => ok@??? R=r1 T=t1 H=127.0.0.1 [127.0.0.1] C="250 OK"
@@ -47,7 +44,6 @@ configuration file is TESTSUITE/test-config
 trusted user
 admin user
 dropping to exim gid; retaining priv uid
-locking TESTSUITE/spool/db/retry.lockfile

>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

 Considering: delay@???
 unique = delay@???
@@ -81,13 +77,10 @@ After routing:
   Failed addresses:
   Deferred addresses:
     delay@???
-locking TESTSUITE/spool/db/retry.lockfile
-locking TESTSUITE/spool/db/wait-t1.lockfile
 cmdlog: 'MAIL|:RCPT|:DATA:250:250:354:.:250:QUIT+:250'
 LOG: MAIN
   => ok@??? R=r1 T=t1 H=127.0.0.1 [127.0.0.1]* C="250 OK"

>>>>>>>>>>>>>>>> Exim pid=p1236 (continued-transport) terminating with rc=0 >>>>>>>>>>>>>>>>

-locking TESTSUITE/spool/db/retry.lockfile
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

Considering: delay@???
unique = delay@???
diff --git a/test/stderr/0333 b/test/stderr/0333
index d886f53ee..11c3a10b0 100644
--- a/test/stderr/0333
+++ b/test/stderr/0333
@@ -3,7 +3,6 @@ Hints DB:
configuration file is TESTSUITE/test-config
admin user
dropping to exim gid; retaining priv uid
-locking TESTSUITE/spool/db/retry.lockfile
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

 Considering: ok@???
 unique = ok@???
@@ -31,8 +30,6 @@ After routing:
     ok@???
   Failed addresses:
   Deferred addresses:
-locking TESTSUITE/spool/db/retry.lockfile
-locking TESTSUITE/spool/db/wait-t1.lockfile
 cmdlog: '220:EHLO:250-:MAIL|:RCPT|:DATA:250:250:354:.:250'
 LOG: MAIN
   => ok@??? R=r1 T=t1 H=127.0.0.1 [127.0.0.1] C="250 OK"
@@ -45,7 +42,6 @@ configuration file is TESTSUITE/test-config
 trusted user
 admin user
 dropping to exim gid; retaining priv uid
-locking TESTSUITE/spool/db/retry.lockfile

>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

 Considering: delay@???
 unique = delay@???
@@ -79,8 +75,6 @@ After routing:
   Failed addresses:
   Deferred addresses:
     delay@???
-locking TESTSUITE/spool/db/retry.lockfile
-locking TESTSUITE/spool/db/wait-t1.lockfile
 cmdlog: 'MAIL|:RCPT|:DATA:250:250:354:.:250:QUIT+:250'
 LOG: MAIN
   => ok@??? R=r1 T=t1 H=127.0.0.1 [127.0.0.1]* C="250 OK"
diff --git a/test/stderr/0357 b/test/stderr/0357
index 8d4a2b459..4827e3cc1 100644
--- a/test/stderr/0357
+++ b/test/stderr/0357
@@ -11,7 +11,6 @@ configuration file is TESTSUITE/test-config
 trusted user
 admin user
 dropping to exim gid; retaining priv uid
-locking TESTSUITE/spool/db/retry.lockfile
 no retry data available

>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

Considering: userx@???
@@ -25,7 +24,6 @@ After routing:
Failed addresses:
Deferred addresses:
checking retry status of 127.0.0.1
-locking TESTSUITE/spool/db/retry.lockfile
no retry data available
added retry item for R:userx@???:<CALLER@???>: errno=-44 more_errno=dd,A flags=0
cmdlog: '220:EHLO:250:MAIL:250:RCPT:451:QUIT+:250'
@@ -38,7 +36,6 @@ Succeeded addresses:
Failed addresses:
Deferred addresses:
userx@???
-locking TESTSUITE/spool/db/retry.lockfile
retry for R:userx@???:<CALLER@???> = * 0 0
failing_interval=ttt message_age=ttt
Writing retry data for R:userx@???:<CALLER@???>
@@ -54,7 +51,6 @@ admin user
dropping to exim gid; retaining priv uid
LOG: queue_run MAIN
Start queue run: pid=p1234
-locking TESTSUITE/spool/db/retry.lockfile
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

Considering: userx@???
no domain retry record
@@ -70,7 +66,6 @@ After routing:
Failed addresses:
Deferred addresses:
checking retry status of 127.0.0.1
-locking TESTSUITE/spool/db/retry.lockfile
no host retry record
no message retry record
added retry item for R:userx@???:<CALLER@???>: errno=-44 more_errno=dd,A flags=0
@@ -93,7 +88,6 @@ Succeeded addresses:
Failed addresses:
Deferred addresses:
userx@???
-locking TESTSUITE/spool/db/retry.lockfile
deleted retry information for R:userx@???
deleted retry information for R:test.ex
retry for R:userx@???:<CALLER@???> = * 0 0
@@ -113,7 +107,6 @@ admin user
dropping to exim gid; retaining priv uid
LOG: queue_run MAIN
Start queue run: pid=p1235
-locking TESTSUITE/spool/db/retry.lockfile
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

Considering: userx@???
no domain retry record
@@ -129,7 +122,6 @@ After routing:
Failed addresses:
Deferred addresses:
checking retry status of 127.0.0.1
-locking TESTSUITE/spool/db/retry.lockfile
no host retry record
no message retry record
added retry item for R:userx@???:<CALLER@???>: errno=-44 more_errno=dd,A flags=0
@@ -152,7 +144,6 @@ Succeeded addresses:
Failed addresses:
Deferred addresses:
userx@???
-locking TESTSUITE/spool/db/retry.lockfile
deleted retry information for R:userx@???
deleted retry information for R:test.ex
retry for R:userx@???:<CALLER@???> = * 0 0
@@ -172,7 +163,6 @@ admin user
dropping to exim gid; retaining priv uid
LOG: queue_run MAIN
Start queue run: pid=p1236
-locking TESTSUITE/spool/db/retry.lockfile
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

Considering: userx@???
no domain retry record
diff --git a/test/stderr/0358 b/test/stderr/0358
index 0f27af75d..5ecfe8dcd 100644
--- a/test/stderr/0358
+++ b/test/stderr/0358
@@ -11,7 +11,6 @@ configuration file is TESTSUITE/test-config
trusted user
admin user
dropping to exim gid; retaining priv uid
-locking TESTSUITE/spool/db/retry.lockfile
no retry data available
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

Considering: userx@???
@@ -30,7 +29,6 @@ After routing:
Failed addresses:
Deferred addresses:
checking retry status of 127.0.0.1
-locking TESTSUITE/spool/db/retry.lockfile
no retry data available
added retry item for R:userx@???:<CALLER@???>: errno=-44 more_errno=dd,A flags=0
added retry item for R:usery@???:<CALLER@???>: errno=-44 more_errno=dd,A flags=0
@@ -48,7 +46,6 @@ Succeeded addresses:
Failed addresses:
Deferred addresses:
usery@???
-locking TESTSUITE/spool/db/retry.lockfile
retry for R:usery@???:<CALLER@???> = * 0 0
failing_interval=ttt message_age=ttt
Writing retry data for R:usery@???:<CALLER@???>
@@ -70,7 +67,6 @@ admin user
dropping to exim gid; retaining priv uid
LOG: queue_run MAIN
Start queue run: pid=p1234
-locking TESTSUITE/spool/db/retry.lockfile
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

Considering: userx@???
no domain retry record
@@ -94,7 +90,6 @@ After routing:
Failed addresses:
Deferred addresses:
checking retry status of 127.0.0.1
-locking TESTSUITE/spool/db/retry.lockfile
no host retry record
no message retry record
added retry item for R:userx@???:<CALLER@???>: errno=-44 more_errno=dd,A flags=0
@@ -131,7 +126,6 @@ Succeeded addresses:
Failed addresses:
Deferred addresses:
usery@???
-locking TESTSUITE/spool/db/retry.lockfile
deleted retry information for R:usery@???
deleted retry information for R:test.ex
retry for R:usery@???:<CALLER@???> = * 0 0
diff --git a/test/stderr/0360 b/test/stderr/0360
index 705be3484..cff19addd 100644
--- a/test/stderr/0360
+++ b/test/stderr/0360
@@ -12,7 +12,6 @@ trusted user
admin user
dropping to exim gid; retaining priv uid
delivering 10HmaX-000000005vi-0000
-locking TESTSUITE/spool/db/retry.lockfile
no retry data available
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

Considering: cms@???
@@ -63,7 +62,6 @@ routed by r2 router
envelope to: cms@???
transport: <none>
errors to postmaster@???
-locking TESTSUITE/spool/db/retry.lockfile
no retry data available
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

Considering: unknown@???
@@ -112,7 +110,6 @@ main lookup for domain
domain changed to recurse.test.ex.test.ex
rewriting header lines
re-routed to unknown@???
-locking TESTSUITE/spool/db/retry.lockfile
no retry data available
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

 Considering: unknown@???
@@ -149,7 +146,6 @@ After routing:
   Failed addresses:
   Deferred addresses:
     defer@???
-locking TESTSUITE/spool/db/retry.lockfile
 LOG: MAIN
   *> unknown@??? <cms@???> R=r1 T=t1 H=recurse.test.ex.test.ex [V4NET.99.0.2] C="delivery bypassed by -N option"

>>>>>>>>>>>>>>>> Exim pid=p1236 (local-accept-delivery) terminating with rc=0 >>>>>>>>>>>>>>>>

@@ -161,7 +157,6 @@ admin user
dropping to exim gid; retaining priv uid
LOG: queue_run MAIN
Start queue run: pid=p1234 -qf
-locking TESTSUITE/spool/db/retry.lockfile
no retry data available
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

Considering: cms@???
@@ -212,7 +207,6 @@ routed by r2 router
envelope to: cms@???
transport: <none>
errors to postmaster@???
-locking TESTSUITE/spool/db/retry.lockfile
no retry data available
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

Considering: unknown@???
diff --git a/test/stderr/0361 b/test/stderr/0361
index e68c3c7e5..bd6d0a477 100644
--- a/test/stderr/0361
+++ b/test/stderr/0361
@@ -78,8 +78,6 @@ body_linecount=0 message_linecount=8
DSN: set orcpt: flags: 0x0
Delivery address list:
kilos@???
- locking TESTSUITE/spool/db/retry.lockfile
- locked TESTSUITE/spool/db/retry.lockfile
EXIM_DBOPEN: file <TESTSUITE/spool/db/retry> dir <TESTSUITE/spool/db> flags=O_RDONLY
returned from EXIM_DBOPEN: (nil)
failed to open DB file TESTSUITE/spool/db/retry: No such file or directory
@@ -137,8 +135,6 @@ rewriting header lines
rewrite_one_header: type=F:
From: CALLER_NAME <CALLER@???>
re-routed to kilos@???
- locking TESTSUITE/spool/db/retry.lockfile
- locked TESTSUITE/spool/db/retry.lockfile
EXIM_DBOPEN: file <TESTSUITE/spool/db/retry> dir <TESTSUITE/spool/db> flags=O_RDONLY
returned from EXIM_DBOPEN: (nil)
failed to open DB file TESTSUITE/spool/db/retry: No such file or directory
@@ -184,8 +180,6 @@ r3 router generated kilos@???
routed by r3 router
envelope to: kilos@???
transport: <none>
- locking TESTSUITE/spool/db/retry.lockfile
- locked TESTSUITE/spool/db/retry.lockfile
EXIM_DBOPEN: file <TESTSUITE/spool/db/retry> dir <TESTSUITE/spool/db> flags=O_RDONLY
returned from EXIM_DBOPEN: (nil)
failed to open DB file TESTSUITE/spool/db/retry: No such file or directory
@@ -238,8 +232,6 @@ After routing:
search_tidyup called
>>>>>>>>>>>>>>>> Local deliveries >>>>>>>>>>>>>>>>

--------> kilos@??? <--------
- locking TESTSUITE/spool/db/retry.lockfile
- locked TESTSUITE/spool/db/retry.lockfile
EXIM_DBOPEN: file <TESTSUITE/spool/db/retry> dir <TESTSUITE/spool/db> flags=O_RDONLY
returned from EXIM_DBOPEN: (nil)
failed to open DB file TESTSUITE/spool/db/retry: No such file or directory
diff --git a/test/stderr/0374 b/test/stderr/0374
index 6c6ffdb15..82baa09e7 100644
--- a/test/stderr/0374
+++ b/test/stderr/0374
@@ -11,7 +11,6 @@ configuration file is TESTSUITE/test-config
trusted user
admin user
dropping to exim gid; retaining priv uid
-locking TESTSUITE/spool/db/retry.lockfile
no retry data available
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

Considering: a1@???
@@ -197,7 +196,6 @@ routed by u1 router (unseen)
envelope to: a1@???
transport: ut1
"unseen" set: replicated a1@???
-locking TESTSUITE/spool/db/retry.lockfile
no retry data available
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

 Considering: a1@???
@@ -356,50 +354,35 @@ After routing:
     d3@???
   Failed addresses:
   Deferred addresses:
-locking TESTSUITE/spool/db/retry.lockfile
 LOG: MAIN
   => a1 <a1@???> R=real T=real
-locking TESTSUITE/spool/db/retry.lockfile
 LOG: MAIN
   => b1 <b1@???> R=real T=real
-locking TESTSUITE/spool/db/retry.lockfile
 LOG: MAIN
   => c1 <c1@???> R=real T=real
-locking TESTSUITE/spool/db/retry.lockfile
 LOG: MAIN
   => d1 <d1@???> R=real T=real
-locking TESTSUITE/spool/db/retry.lockfile
 LOG: MAIN
   => d2 <d2@???> R=real T=real
-locking TESTSUITE/spool/db/retry.lockfile
 LOG: MAIN
   => d3 <d3@???> R=real T=real
-locking TESTSUITE/spool/db/retry.lockfile
 LOG: MAIN
   => a1 <a1@???> R=u1 T=ut1
-locking TESTSUITE/spool/db/retry.lockfile
 transport error EPIPE ignored
 LOG: MAIN
   ** b1@??? R=ut2 T=ut2: Child process of ut2 transport returned 127 (could mean unable to exec or command does not exist) from command: /non/existent/file
-locking TESTSUITE/spool/db/retry.lockfile
 transport error EPIPE ignored
 LOG: MAIN
   == c1@??? R=ut3 T=ut3 defer (0): Child process of ut3 transport returned 127 (could mean unable to exec or command does not exist) from command: /non/existent/file
-locking TESTSUITE/spool/db/retry.lockfile
-locking TESTSUITE/spool/db/wait-ut4.lockfile
 cmdlog: '220'
 LOG: MAIN
   => d1@??? R=ut4 T=ut4 H=127.0.0.1 [127.0.0.1] C="250 OK"
-locking TESTSUITE/spool/db/retry.lockfile
 cmdlog: '220'
 LOG: MAIN
   == d2@??? R=ut4 T=ut4 defer (-44) H=127.0.0.1 [127.0.0.1]: SMTP error from remote mail server after RCPT TO:<d2@???>: 450 soft error
-locking TESTSUITE/spool/db/retry.lockfile
-locking TESTSUITE/spool/db/wait-ut4.lockfile
 cmdlog: '220'
 LOG: MAIN
   ** d3@??? R=ut4 T=ut4 H=127.0.0.1 [127.0.0.1]: SMTP error from remote mail server after RCPT TO:<d3@???>: 550 hard error
-locking TESTSUITE/spool/db/retry.lockfile
 Exim version x.yz ....
 Hints DB:
 configuration file is TESTSUITE/test-config
@@ -413,7 +396,6 @@ configuration file is TESTSUITE/test-config
 trusted user
 admin user
 dropping to exim gid; retaining priv uid
-locking TESTSUITE/spool/db/retry.lockfile

>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

Considering: CALLER@???
unique = CALLER@???
@@ -460,7 +442,6 @@ After routing:
Remote deliveries:
Failed addresses:
Deferred addresses:
-locking TESTSUITE/spool/db/retry.lockfile
LOG: MAIN
=> CALLER <CALLER@???> R=real T=real
LOG: MAIN
diff --git a/test/stderr/0375 b/test/stderr/0375
index f8e3b9cf5..5a909eff3 100644
--- a/test/stderr/0375
+++ b/test/stderr/0375
@@ -11,7 +11,6 @@ configuration file is TESTSUITE/test-config
trusted user
admin user
dropping to exim gid; retaining priv uid
-locking TESTSUITE/spool/db/retry.lockfile
no retry data available
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

Considering: a1@???
@@ -429,7 +428,6 @@ routed by u1 router (unseen)
transport: ut1
errors to
"unseen" set: replicated a1@???
-locking TESTSUITE/spool/db/retry.lockfile
no retry data available
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

 Considering: a1@???
@@ -834,91 +832,65 @@ After routing:
   Failed addresses:
   Deferred addresses:
     g1@???
-locking TESTSUITE/spool/db/retry.lockfile
 LOG: MAIN
   => a1 <a1@???> P=<CALLER@???> R=real T=real
-locking TESTSUITE/spool/db/retry.lockfile
 LOG: MAIN
   => b1 <b1@???> P=<CALLER@???> R=real T=real
-locking TESTSUITE/spool/db/retry.lockfile
 LOG: MAIN
   => c1 <c1@???> P=<CALLER@???> R=real T=real
-locking TESTSUITE/spool/db/retry.lockfile
 LOG: MAIN
   => d1 <d1@???> P=<CALLER@???> R=real T=real
-locking TESTSUITE/spool/db/retry.lockfile
 LOG: MAIN
   => d2 <d2@???> P=<CALLER@???> R=real T=real
-locking TESTSUITE/spool/db/retry.lockfile
 LOG: MAIN
   => d3 <d3@???> P=<CALLER@???> R=real T=real
-locking TESTSUITE/spool/db/retry.lockfile
 LOG: MAIN
   => e1 <e1@???> P=<CALLER@???> R=real T=real
-locking TESTSUITE/spool/db/retry.lockfile
 LOG: MAIN
   => f1 <f1@???> P=<CALLER@???> R=real T=real
-locking TESTSUITE/spool/db/retry.lockfile
 LOG: MAIN
   => f2 <f2@???> P=<CALLER@???> R=real T=real
-locking TESTSUITE/spool/db/retry.lockfile
 LOG: MAIN
   => f3 <f3@???> P=<CALLER@???> R=real T=real
-locking TESTSUITE/spool/db/retry.lockfile
 LOG: MAIN
   => a1 <a1@???> P=<> R=u1 T=ut1
 log writing disabled
-locking TESTSUITE/spool/db/retry.lockfile
 transport error EPIPE ignored
 LOG: MAIN
   ** b1@??? P=<> R=ut2 T=ut2: Child process of ut2 transport returned 127 (could mean unable to exec or command does not exist) from command: /non/existent/file
 log writing disabled
-locking TESTSUITE/spool/db/retry.lockfile
 transport error EPIPE ignored
 LOG: MAIN
   == c1@??? R=ut3 T=ut3 defer (0): Child process of ut3 transport returned 127 (could mean unable to exec or command does not exist) from command: /non/existent/file
 log writing disabled
-locking TESTSUITE/spool/db/retry.lockfile
-locking TESTSUITE/spool/db/wait-ut4.lockfile
 cmdlog: '220'
 LOG: MAIN
   => d1@??? P=<> R=ut4 T=ut4 H=127.0.0.1 [127.0.0.1] C="250 OK"
 log writing disabled
-locking TESTSUITE/spool/db/retry.lockfile
 cmdlog: '220'
 LOG: MAIN
   == d2@??? R=ut4 T=ut4 defer (-44) H=127.0.0.1 [127.0.0.1]: SMTP error from remote mail server after RCPT TO:<d2@???>: 450 soft error
 log writing disabled
-locking TESTSUITE/spool/db/retry.lockfile
-locking TESTSUITE/spool/db/wait-ut4.lockfile
 cmdlog: '220'
 LOG: MAIN
   ** d3@??? P=<> R=ut4 T=ut4 H=127.0.0.1 [127.0.0.1]: SMTP error from remote mail server after RCPT TO:<d3@???>: 550 hard error
 log writing disabled
-locking TESTSUITE/spool/db/retry.lockfile
-locking TESTSUITE/spool/db/wait-ut5.lockfile
 cmdlog: '220'
 LOG: MAIN
   ** e1@??? P=<> R=ut5 T=ut5 H=127.0.0.1 [127.0.0.1]: SMTP error from remote mail server after RCPT TO:<e1@???>: 550 hard error
 log writing disabled
-locking TESTSUITE/spool/db/retry.lockfile
-locking TESTSUITE/spool/db/wait-ut6.lockfile
 cmdlog: '220'
 LOG: MAIN
   => f1@??? P=<CALLER@???> R=ut6 T=ut6 H=127.0.0.1 [127.0.0.1] C="250 OK"
 log writing disabled
-locking TESTSUITE/spool/db/retry.lockfile
 cmdlog: '220'
 LOG: MAIN
   == f2@??? R=ut6 T=ut6 defer (-44) H=127.0.0.1 [127.0.0.1]: SMTP error from remote mail server after RCPT TO:<f2@???>: 450 soft error
 log writing disabled
-locking TESTSUITE/spool/db/retry.lockfile
-locking TESTSUITE/spool/db/wait-ut6.lockfile
 cmdlog: '220'
 LOG: MAIN
   ** f3@??? P=<CALLER@???> R=ut6 T=ut6 H=127.0.0.1 [127.0.0.1]: SMTP error from remote mail server after RCPT TO:<f3@???>: 550 hard error
 log writing disabled
-locking TESTSUITE/spool/db/retry.lockfile
 LOG: MAIN
   f3@??? <f3@???>: error ignored
 log writing disabled
@@ -935,7 +907,6 @@ configuration file is TESTSUITE/test-config
 trusted user
 admin user
 dropping to exim gid; retaining priv uid
-locking TESTSUITE/spool/db/retry.lockfile

>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

Considering: CALLER@???
unique = CALLER@???
@@ -1002,7 +973,6 @@ After routing:
Remote deliveries:
Failed addresses:
Deferred addresses:
-locking TESTSUITE/spool/db/retry.lockfile
LOG: MAIN
=> CALLER <CALLER@???> P=<> R=real T=real
LOG: MAIN
@@ -1029,7 +999,6 @@ configuration file is TESTSUITE/test-config
trusted user
admin user
dropping to exim gid; retaining priv uid
-locking TESTSUITE/spool/db/retry.lockfile
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

Considering: h1@???
unique = h1@???
@@ -1087,7 +1056,6 @@ routed by ut8 router (unseen)
envelope to: h1@???
transport: ut1
"unseen" set: replicated h1@???
-locking TESTSUITE/spool/db/retry.lockfile
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

Considering: h1@???
unique = \0\h1@???
@@ -1115,10 +1083,8 @@ After routing:
Remote deliveries:
Failed addresses:
Deferred addresses:
-locking TESTSUITE/spool/db/retry.lockfile
LOG: MAIN
=> h1 <h1@???> P=<CALLER@???> R=real T=real
-locking TESTSUITE/spool/db/retry.lockfile
LOG: MAIN
=> h1 <h1@???> P=<CALLER@???> R=ut8 T=ut1
log writing disabled
diff --git a/test/stderr/0377 b/test/stderr/0377
index 560192970..4cdc7f417 100644
--- a/test/stderr/0377
+++ b/test/stderr/0377
@@ -11,7 +11,6 @@ configuration file is TESTSUITE/test-config
trusted user
admin user
dropping to exim gid; retaining priv uid
-locking TESTSUITE/spool/db/retry.lockfile
no retry data available
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

Considering: aaaa@???
@@ -137,7 +136,6 @@ routed by unseen_aaaa router (unseen)
envelope to: aaaa@???
transport: <none>
"unseen" set: replicated aaaa@???
-locking TESTSUITE/spool/db/retry.lockfile
no retry data available
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

 Considering: aaaa@???
@@ -317,16 +315,12 @@ After routing:
     defer_aaaa@???
     defer_bbbb@???
     defer_cccc@???
-locking TESTSUITE/spool/db/retry.lockfile
 LOG: MAIN
   => aaaa <aaaa@???> R=seen_aaaa T=t1
-locking TESTSUITE/spool/db/retry.lockfile
 LOG: MAIN
   => bbbb <bbbb@???> R=bbbb_0 T=t1
-locking TESTSUITE/spool/db/retry.lockfile
 LOG: MAIN
   => cccc <cccc@???> R=cccc_accept T=t1
-locking TESTSUITE/spool/db/retry.lockfile

>>>>>>>>>>>>>>>> Exim pid=p1237 (local-accept-delivery) terminating with rc=0 >>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> Exim pid=p1236 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>

Exim version x.yz ....
@@ -336,7 +330,6 @@ admin user
dropping to exim gid; retaining priv uid
LOG: queue_run MAIN
Start queue run: pid=p1234 -qf
-locking TESTSUITE/spool/db/retry.lockfile
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

Considering: aaaa@???
unique = aaaa@???
@@ -454,7 +447,6 @@ domain = myhost.test.ex
routed by seen_aaaa router
envelope to: aaaa@???
transport: t1
-locking TESTSUITE/spool/db/retry.lockfile
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

Considering: cccc@???
unique = \0\cccc@???
@@ -507,7 +499,6 @@ cccc_redirect router generated cccc@???
routed by cccc_redirect router
envelope to: cccc@???
transport: <none>
-locking TESTSUITE/spool/db/retry.lockfile
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

Considering: cccc@???
unique = \1\cccc@???
@@ -589,7 +580,6 @@ After routing:
cccc@??? was previously delivered (t1 transport): discarded
aaaa@??? was previously delivered (t1 transport): discarded
bbbb@??? was previously delivered (t1 transport): discarded
-locking TESTSUITE/spool/db/retry.lockfile
>>>>>>>>>>>>>>>> Exim pid=p1238 (qrun-delivery) terminating with rc=0 >>>>>>>>>>>>>>>>

LOG: queue_run MAIN
End queue run: pid=p1234 -qf
@@ -601,7 +591,6 @@ admin user
dropping to exim gid; retaining priv uid
LOG: queue_run MAIN
Start queue run: pid=p1235 -qf
-locking TESTSUITE/spool/db/retry.lockfile
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

Considering: aaaa@???
unique = aaaa@???
@@ -719,7 +708,6 @@ domain = myhost.test.ex
routed by seen_aaaa router
envelope to: aaaa@???
transport: t1
-locking TESTSUITE/spool/db/retry.lockfile
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

Considering: cccc@???
unique = \0\cccc@???
@@ -772,7 +760,6 @@ cccc_redirect router generated cccc@???
routed by cccc_redirect router
envelope to: cccc@???
transport: <none>
-locking TESTSUITE/spool/db/retry.lockfile
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

Considering: cccc@???
unique = \1\cccc@???
@@ -854,7 +841,6 @@ After routing:
cccc@??? was previously delivered (t1 transport): discarded
aaaa@??? was previously delivered (t1 transport): discarded
bbbb@??? was previously delivered (t1 transport): discarded
-locking TESTSUITE/spool/db/retry.lockfile
>>>>>>>>>>>>>>>> Exim pid=p1239 (qrun-delivery) terminating with rc=0 >>>>>>>>>>>>>>>>

LOG: queue_run MAIN
End queue run: pid=p1235 -qf
diff --git a/test/stderr/0378 b/test/stderr/0378
index befab983d..e18685a37 100644
--- a/test/stderr/0378
+++ b/test/stderr/0378
@@ -11,7 +11,6 @@ configuration file is TESTSUITE/test-config
trusted user
admin user
dropping to exim gid; retaining priv uid
-locking TESTSUITE/spool/db/retry.lockfile
no retry data available
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

Considering: aaaa@???
@@ -72,7 +71,6 @@ aaaa router generated defer_aaaa@???
routed by aaaa router
envelope to: aaaa@???
transport: <none>
-locking TESTSUITE/spool/db/retry.lockfile
no retry data available
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

 Considering: defer_aaaa@???
@@ -121,7 +119,6 @@ After routing:
   Failed addresses:
   Deferred addresses:
     defer_aaaa@???
-locking TESTSUITE/spool/db/retry.lockfile
 Exim version x.yz ....
 Hints DB:
 configuration file is TESTSUITE/test-config
@@ -134,7 +131,6 @@ configuration file is TESTSUITE/test-config
 trusted user
 admin user
 dropping to exim gid; retaining priv uid
-locking TESTSUITE/spool/db/retry.lockfile
 no retry data available

>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

Considering: CALLER@???
@@ -166,14 +162,11 @@ LOG: MAIN
>>>>>>>>>>>>>>>> Exim pid=p1238 (autoreply) terminating with rc=0 >>>>>>>>>>>>>>>>

LOG: MAIN
=> >CALLER@??? <aaaa@???> R=aaaa T=t3
-locking TESTSUITE/spool/db/retry.lockfile
transport error EPIPE ignored
LOG: MAIN
=> |/bin/sh -c exit <aaaa@???> R=aaaa T=t2
-locking TESTSUITE/spool/db/retry.lockfile
LOG: MAIN
=> TESTSUITE/test-mail/file <aaaa@???> R=aaaa T=t1
-locking TESTSUITE/spool/db/retry.lockfile
>>>>>>>>>>>>>>>> Exim pid=p1236 (local-accept-delivery) terminating with rc=0 >>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> Exim pid=p1235 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>

Exim version x.yz ....
@@ -183,7 +176,6 @@ admin user
dropping to exim gid; retaining priv uid
LOG: queue_run MAIN
Start queue run: pid=p1234 -qf
-locking TESTSUITE/spool/db/retry.lockfile
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

Considering: aaaa@???
unique = aaaa@???
@@ -217,7 +209,6 @@ aaaa_2nd_time router generated aaaa@???
routed by aaaa_2nd_time router
envelope to: aaaa@???
transport: <none>
-locking TESTSUITE/spool/db/retry.lockfile
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

Considering: aaaa@???
unique = \0\aaaa@???
@@ -274,7 +265,6 @@ aaaa router generated defer_aaaa@???
routed by aaaa router
envelope to: aaaa@???
transport: <none>
-locking TESTSUITE/spool/db/retry.lockfile
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

 Considering: defer_aaaa@???
 unique = defer_aaaa@???
@@ -319,7 +309,6 @@ After routing:
   Failed addresses:
   Deferred addresses:
     defer_aaaa@???
-locking TESTSUITE/spool/db/retry.lockfile

>>>>>>>>>>>>>>>> Exim pid=p1241 (qrun-delivery) terminating with rc=0 >>>>>>>>>>>>>>>>

LOG: queue_run MAIN
End queue run: pid=p1234 -qf
diff --git a/test/stderr/0379 b/test/stderr/0379
index 46275ea5d..b67f47861 100644
--- a/test/stderr/0379
+++ b/test/stderr/0379
@@ -11,7 +11,6 @@ configuration file is TESTSUITE/test-config
trusted user
admin user
dropping to exim gid; retaining priv uid
-locking TESTSUITE/spool/db/retry.lockfile
no retry data available
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

Considering: defer@???
@@ -62,7 +61,6 @@ defer router: defer for defer@???
message: forced defer
LOG: MAIN
== defer@??? R=defer defer (-1): forced defer
-locking TESTSUITE/spool/db/retry.lockfile
no retry data available
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

 Considering: bbbb@???
@@ -132,13 +130,10 @@ After routing:
   Failed addresses:
   Deferred addresses:
     defer@???
-locking TESTSUITE/spool/db/retry.lockfile
 LOG: MAIN
   => bbbb <aaaa@???> R=bc T=t1
-locking TESTSUITE/spool/db/retry.lockfile
 LOG: MAIN
   => cccc <aaaa@???> R=bc T=t1
-locking TESTSUITE/spool/db/retry.lockfile

>>>>>>>>>>>>>>>> Exim pid=p1236 (local-accept-delivery) terminating with rc=0 >>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> Exim pid=p1235 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>

Exim version x.yz ....
@@ -148,7 +143,6 @@ admin user
dropping to exim gid; retaining priv uid
LOG: queue_run MAIN
Start queue run: pid=p1234 -qf
-locking TESTSUITE/spool/db/retry.lockfile
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

 Considering: defer@???
 unique = defer@???
@@ -175,7 +169,6 @@ After routing:
   Failed addresses:
   Deferred addresses:
     defer@???
-locking TESTSUITE/spool/db/retry.lockfile

>>>>>>>>>>>>>>>> Exim pid=p1237 (qrun-delivery) terminating with rc=0 >>>>>>>>>>>>>>>>

LOG: queue_run MAIN
End queue run: pid=p1234 -qf
diff --git a/test/stderr/0380 b/test/stderr/0380
index efbad7565..3c0139d57 100644
--- a/test/stderr/0380
+++ b/test/stderr/0380
@@ -11,7 +11,6 @@ configuration file is TESTSUITE/test-config
trusted user
admin user
dropping to exim gid; retaining priv uid
-locking TESTSUITE/spool/db/retry.lockfile
no retry data available
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

 Considering: aaaa@???
@@ -81,9 +80,7 @@ After routing:
   Failed addresses:
   Deferred addresses:
     aaaa@???
-locking TESTSUITE/spool/db/retry.lockfile
 LOG: MAIN
   => bbbb <bbbb@???> R=r3 T=t1
-locking TESTSUITE/spool/db/retry.lockfile

>>>>>>>>>>>>>>>> Exim pid=p1235 (local-accept-delivery) terminating with rc=0 >>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> Exim pid=p1234 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>

diff --git a/test/stderr/0386 b/test/stderr/0386
index e2721b8c4..800b8b2ce 100644
--- a/test/stderr/0386
+++ b/test/stderr/0386
@@ -312,8 +312,6 @@ body_linecount=1 message_linecount=8
DSN: set orcpt: flags: 0x0
Delivery address list:
2@b
- locking TESTSUITE/spool/db/retry.lockfile
- locked TESTSUITE/spool/db/retry.lockfile
EXIM_DBOPEN: file <TESTSUITE/spool/db/retry> dir <TESTSUITE/spool/db> flags=O_RDONLY
returned from EXIM_DBOPEN: (nil)
failed to open DB file TESTSUITE/spool/db/retry: No such file or directory
@@ -349,8 +347,6 @@ After routing:
search_tidyup called
>>>>>>>>>>>>>>>> Local deliveries >>>>>>>>>>>>>>>>

--------> 2@b <--------
- locking TESTSUITE/spool/db/retry.lockfile
- locked TESTSUITE/spool/db/retry.lockfile
EXIM_DBOPEN: file <TESTSUITE/spool/db/retry> dir <TESTSUITE/spool/db> flags=O_RDONLY
returned from EXIM_DBOPEN: (nil)
failed to open DB file TESTSUITE/spool/db/retry: No such file or directory
@@ -510,8 +506,6 @@ body_linecount=1 message_linecount=8
DSN: set orcpt: flags: 0x0
Delivery address list:
2@b
- locking TESTSUITE/spool/db/retry.lockfile
- locked TESTSUITE/spool/db/retry.lockfile
EXIM_DBOPEN: file <TESTSUITE/spool/db/retry> dir <TESTSUITE/spool/db> flags=O_RDONLY
returned from EXIM_DBOPEN: (nil)
failed to open DB file TESTSUITE/spool/db/retry: No such file or directory
@@ -547,8 +541,6 @@ After routing:
search_tidyup called
>>>>>>>>>>>>>>>> Local deliveries >>>>>>>>>>>>>>>>

--------> 2@b <--------
- locking TESTSUITE/spool/db/retry.lockfile
- locked TESTSUITE/spool/db/retry.lockfile
EXIM_DBOPEN: file <TESTSUITE/spool/db/retry> dir <TESTSUITE/spool/db> flags=O_RDONLY
returned from EXIM_DBOPEN: (nil)
failed to open DB file TESTSUITE/spool/db/retry: No such file or directory
diff --git a/test/stderr/0388 b/test/stderr/0388
index a84d5b163..1a6c4bf24 100644
--- a/test/stderr/0388
+++ b/test/stderr/0388
@@ -7,8 +7,6 @@ admin user
dropping to exim gid; retaining priv uid
set_process_info: pppp delivering specified messages
set_process_info: pppp delivering 10HmaX-000000005vi-0000
- locking TESTSUITE/spool/db/retry.lockfile
- locked TESTSUITE/spool/db/retry.lockfile
EXIM_DBOPEN: file <TESTSUITE/spool/db/retry> dir <TESTSUITE/spool/db> flags=O_RDONLY
returned from EXIM_DBOPEN: (nil)
failed to open DB file TESTSUITE/spool/db/retry: No such file or directory
@@ -78,8 +76,6 @@ changed uid/gid: remote delivery to x@y with transport=smtp
uid=EXIM_UID gid=EXIM_GID pid=p1235
set_process_info: pppp delivering 10HmaX-000000005vi-0000 using smtp
checking retry status of 127.0.0.1
- locking TESTSUITE/spool/db/retry.lockfile
- locked TESTSUITE/spool/db/retry.lockfile
EXIM_DBOPEN: file <TESTSUITE/spool/db/retry> dir <TESTSUITE/spool/db> flags=O_RDONLY
returned from EXIM_DBOPEN: (nil)
failed to open DB file TESTSUITE/spool/db/retry: No such file or directory
@@ -121,8 +117,6 @@ set_process_info: pppp delivering 10HmaX-000000005vi-0000: just tried 127.0.0.1
*@127.0.0.1 in "*"? yes (matched "*")
Clearing TFO as not first host for message
checking retry status of V4NET.0.0.0
- locking TESTSUITE/spool/db/retry.lockfile
- locked TESTSUITE/spool/db/retry.lockfile
EXIM_DBOPEN: file <TESTSUITE/spool/db/retry> dir <TESTSUITE/spool/db> flags=O_RDONLY
returned from EXIM_DBOPEN: (nil)
failed to open DB file TESTSUITE/spool/db/retry: No such file or directory
@@ -154,8 +148,6 @@ Succeeded addresses:
Failed addresses:
Deferred addresses:
x@y
- locking TESTSUITE/spool/db/retry.lockfile
- locked TESTSUITE/spool/db/retry.lockfile
EXIM_DBOPEN: file <TESTSUITE/spool/db/retry> dir <TESTSUITE/spool/db> flags=O_RDWR
returned from EXIM_DBOPEN: 0xAAAAAAAA
opened hints database TESTSUITE/spool/db/retry: flags=O_RDWR
@@ -173,7 +165,7 @@ failing_interval=ttt message_age=ttt
Writing retry data for R:x@y
first failed=dddd last try=dddd next try=+1 expired=1
errno=-44 more_errno=dd,A H=127.0.0.1 [127.0.0.1]: SMTP error from remote mail server after RCPT TO:<x@y>: 451 Temporary error
- dbfn_write: key=R:x@y datalen NNN
+ dbfn_write: key=R:x@y datalen 148
*@V4NET.0.0.0 in "*"?
list element: *
address match test: subject=*@V4NET.0.0.0 pattern=*
@@ -189,12 +181,12 @@ on queue longer than maximum retry
Writing retry data for T:[V4NET.0.0.0]:V4NET.0.0.0:PORT_S
first failed=dddd last try=dddd next try=+0 expired=0
errno=dd more_errno=dd,A Network Error
- dbfn_write: key=T:[V4NET.0.0.0]:V4NET.0.0.0:PORT_S datalen NNN
+ dbfn_write: key=T:[V4NET.0.0.0]:V4NET.0.0.0:PORT_S datalen 70
timed out: all retries expired
LOG: MAIN
** x@y: retry timeout exceeded
EXIM_DBCLOSE(0xAAAAAAAA)
- closed hints database and lockfile
+ closed hints database
end of retry processing
exec TESTSUITE/eximdir/exim -DEXIM_PATH=TESTSUITE/eximdir/exim -C TESTSUITE/test-config -d=0xd7715ced -MCd bounce-message -odi -odi -t -oem -oi -f <> -E10HmaX-000000005vi-0000
Exim version x.yz ....
@@ -267,8 +259,6 @@ admin user
dropping to exim gid; retaining priv uid
set_process_info: pppp delivering specified messages
set_process_info: pppp delivering 10HmaY-000000005vi-0000
- locking TESTSUITE/spool/db/retry.lockfile
- locked TESTSUITE/spool/db/retry.lockfile
EXIM_DBOPEN: file <TESTSUITE/spool/db/retry> dir <TESTSUITE/spool/db> flags=O_RDONLY
returned from EXIM_DBOPEN: 0xAAAAAAAA
opened hints database TESTSUITE/spool/db/retry: flags=O_RDONLY
@@ -285,7 +275,7 @@ no domain retry record
no address retry record
CALLER@???: queued for routing
EXIM_DBCLOSE(0xAAAAAAAA)
- closed hints database and lockfile
+ closed hints database
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

 routing CALLER@???
 --------> r0 router <--------
diff --git a/test/stderr/0398 b/test/stderr/0398
index 853ffbad3..745b5bb12 100644
--- a/test/stderr/0398
+++ b/test/stderr/0398
@@ -139,8 +139,6 @@ routed by r2 router
   transport: t2
   host 127.0.0.1 [127.0.0.1]
 Attempting full verification using callout
- locking TESTSUITE/spool/db/callout.lockfile
- locked  TESTSUITE/spool/db/callout.lockfile
  EXIM_DBOPEN: file <TESTSUITE/spool/db/callout> dir <TESTSUITE/spool/db> flags=O_RDWR
  returned from EXIM_DBOPEN: 0xAAAAAAAA
  opened hints database TESTSUITE/spool/db/callout: flags=O_RDWR
@@ -151,7 +149,7 @@ Attempting full verification using callout
  dbfn_read: null return
  callout cache: no address record found for qq@remote
  EXIM_DBCLOSE(0xAAAAAAAA)
- closed hints database and lockfile
+ closed hints database
 interface=NULL port=PORT_S
 Connecting to 127.0.0.1 [127.0.0.1]:PORT_S ...
  127.0.0.1 in hosts_try_fastopen?
@@ -177,18 +175,16 @@ cmd buf flush ddd bytes
   SMTP<< 250 OK
   SMTP(close)>>
 cmdlog: '220:EHLO:250:MAIL:250:RCPT:550:QUIT:250'
- locking TESTSUITE/spool/db/callout.lockfile
- locked  TESTSUITE/spool/db/callout.lockfile
  EXIM_DBOPEN: file <TESTSUITE/spool/db/callout> dir <TESTSUITE/spool/db> flags=O_RDWR
  returned from EXIM_DBOPEN: 0xAAAAAAAA
  opened hints database TESTSUITE/spool/db/callout: flags=O_RDWR
- dbfn_write: key=remote datalen NNN
+ dbfn_write: key=remote datalen 40
  wrote callout cache domain record for remote:
    result=1 postmaster=0 random=0
- dbfn_write: key=qq@remote datalen NNN
+ dbfn_write: key=qq@remote datalen 16
  wrote negative callout cache address record for qq@remote
  EXIM_DBCLOSE(0xAAAAAAAA)
- closed hints database and lockfile
+ closed hints database
 ----------- end verify ------------
 l_message: $acl_verify_message
 warn: condition test succeeded in ACL "rcpt"
@@ -276,8 +272,6 @@ routed by r2 router
   transport: t2
   host 127.0.0.1 [127.0.0.1]
 Attempting full verification using callout
- locking TESTSUITE/spool/db/callout.lockfile
- locked  TESTSUITE/spool/db/callout.lockfile
  EXIM_DBOPEN: file <TESTSUITE/spool/db/callout> dir <TESTSUITE/spool/db> flags=O_RDWR
  returned from EXIM_DBOPEN: 0xAAAAAAAA
  opened hints database TESTSUITE/spool/db/callout: flags=O_RDWR
@@ -289,7 +283,7 @@ Attempting full verification using callout
  callout cache: found address record for qq@remote
  callout cache: address record is negative
  EXIM_DBCLOSE(0xAAAAAAAA)
- closed hints database and lockfile
+ closed hints database
 ----------- end verify ------------
 l_message: $acl_verify_message
 warn: condition test succeeded in ACL "rcpt"
diff --git a/test/stderr/0402 b/test/stderr/0402
index 29b3eae63..1f55d3e22 100644
--- a/test/stderr/0402
+++ b/test/stderr/0402
@@ -447,8 +447,6 @@ Delivery address list:
   userz@??? 
   rd+CALLER@??? 
   rd+usery@??? 
- locking TESTSUITE/spool/db/retry.lockfile
- locked  TESTSUITE/spool/db/retry.lockfile
  EXIM_DBOPEN: file <TESTSUITE/spool/db/retry> dir <TESTSUITE/spool/db> flags=O_RDONLY
  returned from EXIM_DBOPEN: (nil)
  failed to open DB file TESTSUITE/spool/db/retry: No such file or directory
@@ -726,8 +724,6 @@ try option unseen
 routed by r1 router
   envelope to: CALLER@???
   transport: t1
- locking TESTSUITE/spool/db/retry.lockfile
- locked  TESTSUITE/spool/db/retry.lockfile
  EXIM_DBOPEN: file <TESTSUITE/spool/db/retry> dir <TESTSUITE/spool/db> flags=O_RDONLY
  returned from EXIM_DBOPEN: (nil)
  failed to open DB file TESTSUITE/spool/db/retry: No such file or directory
@@ -754,8 +750,6 @@ After routing:
 search_tidyup called

>>>>>>>>>>>>>>>> Local deliveries >>>>>>>>>>>>>>>>

--------> TESTSUITE/test-mail/junk <--------
- locking TESTSUITE/spool/db/retry.lockfile
- locked TESTSUITE/spool/db/retry.lockfile
EXIM_DBOPEN: file <TESTSUITE/spool/db/retry> dir <TESTSUITE/spool/db> flags=O_RDONLY
returned from EXIM_DBOPEN: (nil)
failed to open DB file TESTSUITE/spool/db/retry: No such file or directory
@@ -854,8 +848,6 @@ rd+usery@???: children all complete
LOG: MAIN
=> TESTSUITE/test-mail/junk <rd+usery@???> R=r5 T=ft1
--------> TESTSUITE/test-mail/junk <--------
- locking TESTSUITE/spool/db/retry.lockfile
- locked TESTSUITE/spool/db/retry.lockfile
EXIM_DBOPEN: file <TESTSUITE/spool/db/retry> dir <TESTSUITE/spool/db> flags=O_RDONLY
returned from EXIM_DBOPEN: (nil)
failed to open DB file TESTSUITE/spool/db/retry: No such file or directory
@@ -946,8 +938,6 @@ rd+CALLER@???: children all complete
LOG: MAIN
=> TESTSUITE/test-mail/junk <rd+CALLER@???> R=r4 T=ft1
--------> CALLER@??? <--------
- locking TESTSUITE/spool/db/retry.lockfile
- locked TESTSUITE/spool/db/retry.lockfile
EXIM_DBOPEN: file <TESTSUITE/spool/db/retry> dir <TESTSUITE/spool/db> flags=O_RDONLY
returned from EXIM_DBOPEN: (nil)
failed to open DB file TESTSUITE/spool/db/retry: No such file or directory
@@ -981,8 +971,6 @@ CALLER@??? delivered
LOG: MAIN
=> CALLER <CALLER@???> R=r1 T=t1
--------> usery@??? <--------
- locking TESTSUITE/spool/db/retry.lockfile
- locked TESTSUITE/spool/db/retry.lockfile
EXIM_DBOPEN: file <TESTSUITE/spool/db/retry> dir <TESTSUITE/spool/db> flags=O_RDONLY
returned from EXIM_DBOPEN: (nil)
failed to open DB file TESTSUITE/spool/db/retry: No such file or directory
@@ -1024,8 +1012,6 @@ usery@??? delivered
LOG: MAIN
=> usery <usery@???> R=r2 T=t1
--------> userz@??? <--------
- locking TESTSUITE/spool/db/retry.lockfile
- locked TESTSUITE/spool/db/retry.lockfile
EXIM_DBOPEN: file <TESTSUITE/spool/db/retry> dir <TESTSUITE/spool/db> flags=O_RDONLY
returned from EXIM_DBOPEN: (nil)
failed to open DB file TESTSUITE/spool/db/retry: No such file or directory
diff --git a/test/stderr/0403 b/test/stderr/0403
index 0f9775285..f35b593fd 100644
--- a/test/stderr/0403
+++ b/test/stderr/0403
@@ -72,8 +72,6 @@ body_linecount=0 message_linecount=8
DSN: set orcpt: flags: 0x0
Delivery address list:
userx@???
- locking TESTSUITE/spool/db/retry.lockfile
- locked TESTSUITE/spool/db/retry.lockfile
EXIM_DBOPEN: file <TESTSUITE/spool/db/retry> dir <TESTSUITE/spool/db> flags=O_RDONLY
returned from EXIM_DBOPEN: (nil)
failed to open DB file TESTSUITE/spool/db/retry: No such file or directory
@@ -161,8 +159,6 @@ r2 router generated TESTSUITE/test-mail/junk
routed by r2 router
envelope to: userx@???
transport: <none>
- locking TESTSUITE/spool/db/retry.lockfile
- locked TESTSUITE/spool/db/retry.lockfile
EXIM_DBOPEN: file <TESTSUITE/spool/db/retry> dir <TESTSUITE/spool/db> flags=O_RDONLY
returned from EXIM_DBOPEN: (nil)
failed to open DB file TESTSUITE/spool/db/retry: No such file or directory
@@ -181,8 +177,6 @@ After routing:
search_tidyup called
>>>>>>>>>>>>>>>> Local deliveries >>>>>>>>>>>>>>>>

--------> TESTSUITE/test-mail/junk <--------
- locking TESTSUITE/spool/db/retry.lockfile
- locked TESTSUITE/spool/db/retry.lockfile
EXIM_DBOPEN: file <TESTSUITE/spool/db/retry> dir <TESTSUITE/spool/db> flags=O_RDONLY
returned from EXIM_DBOPEN: (nil)
failed to open DB file TESTSUITE/spool/db/retry: No such file or directory
@@ -315,8 +309,6 @@ body_linecount=0 message_linecount=8
DSN: set orcpt: flags: 0x0
Delivery address list:
charlie@???
- locking TESTSUITE/spool/db/retry.lockfile
- locked TESTSUITE/spool/db/retry.lockfile
EXIM_DBOPEN: file <TESTSUITE/spool/db/retry> dir <TESTSUITE/spool/db> flags=O_RDONLY
returned from EXIM_DBOPEN: (nil)
failed to open DB file TESTSUITE/spool/db/retry: No such file or directory
@@ -382,8 +374,6 @@ r1 router generated TESTSUITE/test-mail/junk
routed by r1 router
envelope to: charlie@???
transport: <none>
- locking TESTSUITE/spool/db/retry.lockfile
- locked TESTSUITE/spool/db/retry.lockfile
EXIM_DBOPEN: file <TESTSUITE/spool/db/retry> dir <TESTSUITE/spool/db> flags=O_RDONLY
returned from EXIM_DBOPEN: (nil)
failed to open DB file TESTSUITE/spool/db/retry: No such file or directory
@@ -402,8 +392,6 @@ After routing:
search_tidyup called
>>>>>>>>>>>>>>>> Local deliveries >>>>>>>>>>>>>>>>

--------> TESTSUITE/test-mail/junk <--------
- locking TESTSUITE/spool/db/retry.lockfile
- locked TESTSUITE/spool/db/retry.lockfile
EXIM_DBOPEN: file <TESTSUITE/spool/db/retry> dir <TESTSUITE/spool/db> flags=O_RDONLY
returned from EXIM_DBOPEN: (nil)
failed to open DB file TESTSUITE/spool/db/retry: No such file or directory
diff --git a/test/stderr/0404 b/test/stderr/0404
index 25b74291c..c910f9301 100644
--- a/test/stderr/0404
+++ b/test/stderr/0404
@@ -173,8 +173,6 @@ body_linecount=0 message_linecount=160
DSN: set orcpt: flags: 0x0
Delivery address list:
userx@???
- locking TESTSUITE/spool/db/retry.lockfile
- locked TESTSUITE/spool/db/retry.lockfile
EXIM_DBOPEN: file <TESTSUITE/spool/db/retry> dir <TESTSUITE/spool/db> flags=O_RDONLY
returned from EXIM_DBOPEN: (nil)
failed to open DB file TESTSUITE/spool/db/retry: No such file or directory
@@ -219,8 +217,6 @@ r2 router generated >sender@???,sender@???,sender@???,sender@???
routed by r2 router
envelope to: userx@???
transport: <none>
- locking TESTSUITE/spool/db/retry.lockfile
- locked TESTSUITE/spool/db/retry.lockfile
EXIM_DBOPEN: file <TESTSUITE/spool/db/retry> dir <TESTSUITE/spool/db> flags=O_RDONLY
returned from EXIM_DBOPEN: (nil)
failed to open DB file TESTSUITE/spool/db/retry: No such file or directory
@@ -239,8 +235,6 @@ After routing:
search_tidyup called
>>>>>>>>>>>>>>>> Local deliveries >>>>>>>>>>>>>>>>

--------> >sender@???,sender@???,sender@???,sender@???,sender@???,sender@???,sender@???,sender@???,sender@???,sender@???,sender@???,sender@???,sender@???,sender@???,sender@???,sender@???,sender@???,sender@???, ... <--------
- locking TESTSUITE/spool/db/retry.lockfile
- locked TESTSUITE/spool/db/retry.lockfile
EXIM_DBOPEN: file <TESTSUITE/spool/db/retry> dir <TESTSUITE/spool/db> flags=O_RDONLY
returned from EXIM_DBOPEN: (nil)
failed to open DB file TESTSUITE/spool/db/retry: No such file or directory
@@ -2767,8 +2761,6 @@ Delivery address list:
sender@???
sender@???
sender@???
- locking TESTSUITE/spool/db/retry.lockfile
- locked TESTSUITE/spool/db/retry.lockfile
EXIM_DBOPEN: file <TESTSUITE/spool/db/retry> dir <TESTSUITE/spool/db> flags=O_RDONLY
returned from EXIM_DBOPEN: (nil)
failed to open DB file TESTSUITE/spool/db/retry: No such file or directory
@@ -18590,8 +18582,6 @@ sender@??? is a duplicate address: discarded
sender@??? is a duplicate address: discarded
>>>>>>>>>>>>>>>> Local deliveries >>>>>>>>>>>>>>>>

--------> sender@??? <--------
- locking TESTSUITE/spool/db/retry.lockfile
- locked TESTSUITE/spool/db/retry.lockfile
EXIM_DBOPEN: file <TESTSUITE/spool/db/retry> dir <TESTSUITE/spool/db> flags=O_RDONLY
returned from EXIM_DBOPEN: (nil)
failed to open DB file TESTSUITE/spool/db/retry: No such file or directory
diff --git a/test/stderr/0408 b/test/stderr/0408
index c43b02a03..6c5a96815 100644
--- a/test/stderr/0408
+++ b/test/stderr/0408
@@ -72,8 +72,6 @@ body_linecount=0 message_linecount=8
DSN: set orcpt: flags: 0x0
Delivery address list:
userx@???
- locking TESTSUITE/spool/db/retry.lockfile
- locked TESTSUITE/spool/db/retry.lockfile
EXIM_DBOPEN: file <TESTSUITE/spool/db/retry> dir <TESTSUITE/spool/db> flags=O_RDONLY
returned from EXIM_DBOPEN: (nil)
failed to open DB file TESTSUITE/spool/db/retry: No such file or directory
@@ -141,8 +139,6 @@ After routing:
search_tidyup called
>>>>>>>>>>>>>>>> Local deliveries >>>>>>>>>>>>>>>>

--------> userx@??? <--------
- locking TESTSUITE/spool/db/retry.lockfile
- locked TESTSUITE/spool/db/retry.lockfile
EXIM_DBOPEN: file <TESTSUITE/spool/db/retry> dir <TESTSUITE/spool/db> flags=O_RDONLY
returned from EXIM_DBOPEN: (nil)
failed to open DB file TESTSUITE/spool/db/retry: No such file or directory
diff --git a/test/stderr/0426 b/test/stderr/0426
index f72ecc2ce..941043411 100644
--- a/test/stderr/0426
+++ b/test/stderr/0426
@@ -11,7 +11,6 @@ configuration file is TESTSUITE/test-config
trusted user
admin user
dropping to exim gid; retaining priv uid
-locking TESTSUITE/spool/db/retry.lockfile
no retry data available
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

 Considering: x@???
@@ -54,8 +53,6 @@ After routing:
     x@???
   Failed addresses:
   Deferred addresses:
-locking TESTSUITE/spool/db/retry.lockfile
-locking TESTSUITE/spool/db/wait-t1.lockfile
 cmdlog: '220:EHLO:250:MAIL:250:RCPT:550:QUIT+:250'
 LOG: MAIN
   ** x@??? R=r1 T=t1 H=uppercase.test.ex [127.0.0.1]: SMTP error from remote mail server after RCPT TO:<x@???>: 550 Unknown
@@ -72,7 +69,6 @@ configuration file is TESTSUITE/test-config
 trusted user
 admin user
 dropping to exim gid; retaining priv uid
-locking TESTSUITE/spool/db/retry.lockfile
 no retry data available

>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

 Considering: CALLER@???
diff --git a/test/stderr/0432 b/test/stderr/0432
index ef8cb9889..2e0719788 100644
--- a/test/stderr/0432
+++ b/test/stderr/0432
@@ -92,8 +92,6 @@ MUNGED: ::1 will be omitted in what follows
 get[host|ipnode]byname[2] looked up these IP addresses:
   name=127.0.0.1 address=127.0.0.1
 Attempting full verification using callout
- locking TESTSUITE/spool/db/callout.lockfile
- locked  TESTSUITE/spool/db/callout.lockfile
  EXIM_DBOPEN: file <TESTSUITE/spool/db/callout> dir <TESTSUITE/spool/db> flags=O_RDWR
  returned from EXIM_DBOPEN: 0xAAAAAAAA
  opened hints database TESTSUITE/spool/db/callout: flags=O_RDWR
@@ -104,7 +102,7 @@ Attempting full verification using callout
  dbfn_read: null return
  callout cache: no address record found for x@y
  EXIM_DBCLOSE(0xAAAAAAAA)
- closed hints database and lockfile
+ closed hints database
 interface=NULL port=PORT_S
 Connecting to 127.0.0.1 [127.0.0.1]:PORT_S ...
  127.0.0.1 in hosts_try_fastopen?
@@ -130,18 +128,16 @@ cmd buf flush ddd bytes
   SMTP<< 220 OK
   SMTP(close)>>
 cmdlog: '220:EHLO:250:MAIL:250:RCPT:250:QUIT:220'
- locking TESTSUITE/spool/db/callout.lockfile
- locked  TESTSUITE/spool/db/callout.lockfile
  EXIM_DBOPEN: file <TESTSUITE/spool/db/callout> dir <TESTSUITE/spool/db> flags=O_RDWR
  returned from EXIM_DBOPEN: 0xAAAAAAAA
  opened hints database TESTSUITE/spool/db/callout: flags=O_RDWR
- dbfn_write: key=y datalen NNN
+ dbfn_write: key=y datalen 40
  wrote callout cache domain record for y:
    result=1 postmaster=0 random=0
- dbfn_write: key=x@y datalen NNN
+ dbfn_write: key=x@y datalen 16
  wrote positive callout cache address record for x@y
  EXIM_DBCLOSE(0xAAAAAAAA)
- closed hints database and lockfile
+ closed hints database
 ----------- end verify ------------
 sender x@y verified ok
 accept: condition test succeeded in ACL "mail"
@@ -218,8 +214,6 @@ MUNGED: ::1 will be omitted in what follows
 get[host|ipnode]byname[2] looked up these IP addresses:
   name=127.0.0.1 address=127.0.0.1
 Attempting full verification using callout
- locking TESTSUITE/spool/db/callout.lockfile
- locked  TESTSUITE/spool/db/callout.lockfile
  EXIM_DBOPEN: file <TESTSUITE/spool/db/callout> dir <TESTSUITE/spool/db> flags=O_RDWR
  returned from EXIM_DBOPEN: 0xAAAAAAAA
  opened hints database TESTSUITE/spool/db/callout: flags=O_RDWR
@@ -231,7 +225,7 @@ Attempting full verification using callout
  callout cache: found address record for x@y
  callout cache: address record is positive
  EXIM_DBCLOSE(0xAAAAAAAA)
- closed hints database and lockfile
+ closed hints database
 ----------- end verify ------------
 sender x@y verified ok
 accept: condition test succeeded in ACL "mail"
diff --git a/test/stderr/0487 b/test/stderr/0487
index 696d5a72d..15da5685a 100644
--- a/test/stderr/0487
+++ b/test/stderr/0487
@@ -106,8 +106,6 @@ body_linecount=1 message_linecount=9
 DSN: set orcpt:   flags: 0x0
 Delivery address list:
   userx@??? 
- locking TESTSUITE/spool/db/retry.lockfile
- locked  TESTSUITE/spool/db/retry.lockfile
  EXIM_DBOPEN: file <TESTSUITE/spool/db/retry> dir <TESTSUITE/spool/db> flags=O_RDONLY
  returned from EXIM_DBOPEN: (nil)
  failed to open DB file TESTSUITE/spool/db/retry: No such file or directory
@@ -143,8 +141,6 @@ After routing:
 search_tidyup called

>>>>>>>>>>>>>>>> Local deliveries >>>>>>>>>>>>>>>>

--------> userx@??? <--------
- locking TESTSUITE/spool/db/retry.lockfile
- locked TESTSUITE/spool/db/retry.lockfile
EXIM_DBOPEN: file <TESTSUITE/spool/db/retry> dir <TESTSUITE/spool/db> flags=O_RDONLY
returned from EXIM_DBOPEN: (nil)
failed to open DB file TESTSUITE/spool/db/retry: No such file or directory
diff --git a/test/stderr/0529 b/test/stderr/0529
index c4a292a48..587cef7a8 100644
--- a/test/stderr/0529
+++ b/test/stderr/0529
@@ -11,13 +11,11 @@ configuration file is TESTSUITE/test-config
trusted user
admin user
dropping to exim gid; retaining priv uid
-locking TESTSUITE/spool/db/retry.lockfile
no retry data available
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

Considering: x@???
no domain retry record
no address retry record
-locking TESTSUITE/spool/db/retry.lockfile
no retry data available
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

Considering: TESTSUITE/test-mail/rmbox
@@ -28,7 +26,6 @@ After routing:
Remote deliveries:
Failed addresses:
Deferred addresses:
-locking TESTSUITE/spool/db/retry.lockfile
no retry data available
added retry item for T:TESTSUITE/test-mail/rmbox:x@???: errno=-22 more_errno=dd flags=0
LOG: MAIN
@@ -39,7 +36,6 @@ Succeeded addresses:
Failed addresses:
Deferred addresses:
TESTSUITE/test-mail/rmbox
-locking TESTSUITE/spool/db/retry.lockfile
retry for T:TESTSUITE/test-mail/rmbox:x@??? = *@test.ex -22 0
failing_interval=ttt message_age=ttt
Writing retry data for T:TESTSUITE/test-mail/rmbox:x@???
@@ -56,12 +52,10 @@ admin user
dropping to exim gid; retaining priv uid
LOG: queue_run MAIN
Start queue run: pid=p1234
-locking TESTSUITE/spool/db/retry.lockfile
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

Considering: x@???
no domain retry record
no address retry record
-locking TESTSUITE/spool/db/retry.lockfile
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

Considering: TESTSUITE/test-mail/rmbox
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

@@ -71,7 +65,6 @@ After routing:
Remote deliveries:
Failed addresses:
Deferred addresses:
-locking TESTSUITE/spool/db/retry.lockfile
retry record exists: age=ttt (max 1w)
time to retry = tttt expired = 0
retry time not reached: checking ultimate address timeout
diff --git a/test/stderr/0543 b/test/stderr/0543
index 997abd329..b09cdb4f1 100644
--- a/test/stderr/0543
+++ b/test/stderr/0543
@@ -5,7 +5,6 @@ admin user
dropping to exim gid; retaining priv uid
LOG: queue_run MAIN
Start queue run: pid=p1234
-locking TESTSUITE/spool/db/retry.lockfile
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

 Considering: userx@domain1
 unique = userx@domain1
@@ -32,15 +31,12 @@ After routing:
     userx@domain1
   Failed addresses:
   Deferred addresses:
-locking TESTSUITE/spool/db/retry.lockfile
-locking TESTSUITE/spool/db/wait-smtp.lockfile
 cmdlog: '220:EHLO:250-:MAIL:250:RCPT:250:DATA:354:.:250:QUIT+:250'
 LOG: MAIN
   => userx@domain1 R=smarthost T=smtp H=thisloop.test.ex [127.0.0.1] C="250 OK"
 LOG: MAIN
   Completed

>>>>>>>>>>>>>>>> Exim pid=p1235 (qrun-delivery) terminating with rc=0 >>>>>>>>>>>>>>>>

-locking TESTSUITE/spool/db/retry.lockfile
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

Considering: usery@domain1
unique = usery@domain1
diff --git a/test/stderr/0554 b/test/stderr/0554
index 1536315ab..4289094b1 100644
--- a/test/stderr/0554
+++ b/test/stderr/0554
@@ -3,7 +3,6 @@ Hints DB:
configuration file is TESTSUITE/test-config
admin user
dropping to exim gid; retaining priv uid
-locking TESTSUITE/spool/db/retry.lockfile
no retry data available
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

Considering: x@y
@@ -17,7 +16,6 @@ After routing:
Failed addresses:
Deferred addresses:
checking retry status of 127.0.0.1
-locking TESTSUITE/spool/db/retry.lockfile
no retry data available
added retry item for R:x@y:<CALLER@???>: errno=-44 more_errno=dd,A flags=0
cmdlog: '220:EHLO:250:MAIL:250:RCPT:451:QUIT+:250'
@@ -30,7 +28,6 @@ Succeeded addresses:
Failed addresses:
Deferred addresses:
x@y
-locking TESTSUITE/spool/db/retry.lockfile
retry for R:x@y:<CALLER@???> = * 0 0
failing_interval=ttt message_age=ttt
Writing retry data for R:x@y:<CALLER@???>
@@ -43,7 +40,6 @@ Hints DB:
configuration file is TESTSUITE/test-config
admin user
dropping to exim gid; retaining priv uid
-locking TESTSUITE/spool/db/retry.lockfile
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

 Considering: x@y
 no   domain  retry record
@@ -59,12 +55,10 @@ After routing:
   Failed addresses:
   Deferred addresses:
 checking retry status of 127.0.0.1
-locking TESTSUITE/spool/db/retry.lockfile
 no host retry record
 no message retry record
 added retry item for R:x@y:<CALLER@???>: errno=dd more_errno=dd,A flags=1
 added retry item for R:x@y: errno=dd more_errno=dd,A flags=1
-locking TESTSUITE/spool/db/wait-smtp.lockfile
 cmdlog: '220:EHLO:250:MAIL:250:RCPT:250:DATA:354:.:250:QUIT+:250'
 reading retry information for R:x@y from subprocess
   existing delete item dropped
@@ -86,7 +80,6 @@ LOG: MAIN
 Processing retry items
 Succeeded addresses:
  x@y
-locking TESTSUITE/spool/db/retry.lockfile
 deleted retry information for R:x@y:<CALLER@???>
 deleted retry information for R:x@y
 deleted retry information for R:y
diff --git a/test/stderr/0628 b/test/stderr/0628
index 802d98a71..e033ceae2 100644
--- a/test/stderr/0628
+++ b/test/stderr/0628
@@ -53,8 +53,6 @@
 01:01:01 p1239  DSN: set orcpt:   flags: 0x0
 01:01:01 p1239  Delivery address list:
 01:01:01 p1239    dest@??? 
-01:01:01 p1239   locking TESTSUITE/spool/db/retry.lockfile
-01:01:01 p1239   locked  TESTSUITE/spool/db/retry.lockfile
 01:01:01 p1239   EXIM_DBOPEN: file <TESTSUITE/spool/db/retry> dir <TESTSUITE/spool/db> flags=O_RDONLY
 01:01:01 p1239   returned from EXIM_DBOPEN: (nil)
 01:01:01 p1239   failed to open DB file TESTSUITE/spool/db/retry: No such file or directory
@@ -159,8 +157,6 @@
 01:01:01 p1241  DSN: set orcpt:   flags: 0x0
 01:01:01 p1241  Delivery address list:
 01:01:01 p1241    dest2@??? 
-01:01:01 p1241   locking TESTSUITE/spool/db/retry.lockfile
-01:01:01 p1241   locked  TESTSUITE/spool/db/retry.lockfile
 01:01:01 p1241   EXIM_DBOPEN: file <TESTSUITE/spool/db/retry> dir <TESTSUITE/spool/db> flags=O_RDONLY
 01:01:01 p1241   returned from EXIM_DBOPEN: (nil)
 01:01:01 p1241   failed to open DB file TESTSUITE/spool/db/retry: No such file or directory
diff --git a/test/stderr/2600 b/test/stderr/2600
index 4c814c3a1..5a88b759c 100644
--- a/test/stderr/2600
+++ b/test/stderr/2600
@@ -586,8 +586,6 @@ body_linecount=1 message_linecount=8
 DSN: set orcpt:   flags: 0x0
 Delivery address list:
   userx@??? 
- locking TESTSUITE/spool/db/retry.lockfile
- locked  TESTSUITE/spool/db/retry.lockfile
  EXIM_DBOPEN: file <TESTSUITE/spool/db/retry> dir <TESTSUITE/spool/db> flags=O_RDONLY
  returned from EXIM_DBOPEN: (nil)
  failed to open DB file TESTSUITE/spool/db/retry: No such file or directory
@@ -634,8 +632,6 @@ After routing:
 search_tidyup called

>>>>>>>>>>>>>>>> Local deliveries >>>>>>>>>>>>>>>>

--------> userx@??? <--------
- locking TESTSUITE/spool/db/retry.lockfile
- locked TESTSUITE/spool/db/retry.lockfile
EXIM_DBOPEN: file <TESTSUITE/spool/db/retry> dir <TESTSUITE/spool/db> flags=O_RDONLY
returned from EXIM_DBOPEN: (nil)
failed to open DB file TESTSUITE/spool/db/retry: No such file or directory
diff --git a/test/stderr/2610 b/test/stderr/2610
index e35a8f5a4..a047a3244 100644
--- a/test/stderr/2610
+++ b/test/stderr/2610
@@ -808,8 +808,6 @@ body_linecount=1 message_linecount=8
DSN: set orcpt: flags: 0x0
Delivery address list:
ph10@???
- locking TESTSUITE/spool/db/retry.lockfile
- locked TESTSUITE/spool/db/retry.lockfile
EXIM_DBOPEN: file <TESTSUITE/spool/db/retry> dir <TESTSUITE/spool/db> flags=O_RDONLY
returned from EXIM_DBOPEN: (nil)
failed to open DB file TESTSUITE/spool/db/retry: No such file or directory
@@ -877,8 +875,6 @@ search_tidyup called
close MYSQL connection: 127.0.0.1:PORT_N/test/root
>>>>>>>>>>>>>>>> Local deliveries >>>>>>>>>>>>>>>>

--------> ph10@??? <--------
- locking TESTSUITE/spool/db/retry.lockfile
- locked TESTSUITE/spool/db/retry.lockfile
EXIM_DBOPEN: file <TESTSUITE/spool/db/retry> dir <TESTSUITE/spool/db> flags=O_RDONLY
returned from EXIM_DBOPEN: (nil)
failed to open DB file TESTSUITE/spool/db/retry: No such file or directory
diff --git a/test/stderr/2620 b/test/stderr/2620
index 15ce3eab1..ad5ac2be7 100644
--- a/test/stderr/2620
+++ b/test/stderr/2620
@@ -727,8 +727,6 @@ body_linecount=1 message_linecount=8
DSN: set orcpt: flags: 0x0
Delivery address list:
CALLER@???
- locking TESTSUITE/spool/db/retry.lockfile
- locked TESTSUITE/spool/db/retry.lockfile
EXIM_DBOPEN: file <TESTSUITE/spool/db/retry> dir <TESTSUITE/spool/db> flags=O_RDONLY
returned from EXIM_DBOPEN: (nil)
failed to open DB file TESTSUITE/spool/db/retry: No such file or directory
@@ -777,8 +775,6 @@ search_tidyup called
close PGSQL connection: localhost:PORT_N/test/CALLER
>>>>>>>>>>>>>>>> Local deliveries >>>>>>>>>>>>>>>>

--------> CALLER@??? <--------
- locking TESTSUITE/spool/db/retry.lockfile
- locked TESTSUITE/spool/db/retry.lockfile
EXIM_DBOPEN: file <TESTSUITE/spool/db/retry> dir <TESTSUITE/spool/db> flags=O_RDONLY
returned from EXIM_DBOPEN: (nil)
failed to open DB file TESTSUITE/spool/db/retry: No such file or directory
diff --git a/test/stderr/5004 b/test/stderr/5004
index 8d716e9ea..57eed3480 100644
--- a/test/stderr/5004
+++ b/test/stderr/5004
@@ -76,8 +76,6 @@ body_linecount=1 message_linecount=8
DSN: set orcpt: flags: 0x0
Delivery address list:
userx@???
- locking TESTSUITE/spool/db/retry.lockfile
- locked TESTSUITE/spool/db/retry.lockfile
EXIM_DBOPEN: file <TESTSUITE/spool/db/retry> dir <TESTSUITE/spool/db> flags=O_RDONLY
returned from EXIM_DBOPEN: (nil)
failed to open DB file TESTSUITE/spool/db/retry: No such file or directory
@@ -114,8 +112,6 @@ r1 router generated TESTSUITE/test-mail
routed by r1 router
envelope to: userx@???
transport: <none>
- locking TESTSUITE/spool/db/retry.lockfile
- locked TESTSUITE/spool/db/retry.lockfile
EXIM_DBOPEN: file <TESTSUITE/spool/db/retry> dir <TESTSUITE/spool/db> flags=O_RDONLY
returned from EXIM_DBOPEN: (nil)
failed to open DB file TESTSUITE/spool/db/retry: No such file or directory
@@ -134,8 +130,6 @@ After routing:
search_tidyup called
>>>>>>>>>>>>>>>> Local deliveries >>>>>>>>>>>>>>>>

--------> TESTSUITE/test-mail <--------
- locking TESTSUITE/spool/db/retry.lockfile
- locked TESTSUITE/spool/db/retry.lockfile
EXIM_DBOPEN: file <TESTSUITE/spool/db/retry> dir <TESTSUITE/spool/db> flags=O_RDONLY
returned from EXIM_DBOPEN: (nil)
failed to open DB file TESTSUITE/spool/db/retry: No such file or directory
diff --git a/test/stderr/5005 b/test/stderr/5005
index 34cae4c83..afde81d1c 100644
--- a/test/stderr/5005
+++ b/test/stderr/5005
@@ -72,8 +72,6 @@ body_linecount=1 message_linecount=8
DSN: set orcpt: flags: 0x0
Delivery address list:
nofile@???
- locking TESTSUITE/spool/db/retry.lockfile
- locked TESTSUITE/spool/db/retry.lockfile
EXIM_DBOPEN: file <TESTSUITE/spool/db/retry> dir <TESTSUITE/spool/db> flags=O_RDONLY
returned from EXIM_DBOPEN: (nil)
failed to open DB file TESTSUITE/spool/db/retry: No such file or directory
@@ -109,8 +107,6 @@ After routing:
search_tidyup called
>>>>>>>>>>>>>>>> Local deliveries >>>>>>>>>>>>>>>>

--------> nofile@??? <--------
- locking TESTSUITE/spool/db/retry.lockfile
- locked TESTSUITE/spool/db/retry.lockfile
EXIM_DBOPEN: file <TESTSUITE/spool/db/retry> dir <TESTSUITE/spool/db> flags=O_RDONLY
returned from EXIM_DBOPEN: (nil)
failed to open DB file TESTSUITE/spool/db/retry: No such file or directory
@@ -264,8 +260,6 @@ body_linecount=1 message_linecount=8
DSN: set orcpt: flags: 0x0
Delivery address list:
userx@???
- locking TESTSUITE/spool/db/retry.lockfile
- locked TESTSUITE/spool/db/retry.lockfile
EXIM_DBOPEN: file <TESTSUITE/spool/db/retry> dir <TESTSUITE/spool/db> flags=O_RDONLY
returned from EXIM_DBOPEN: (nil)
failed to open DB file TESTSUITE/spool/db/retry: No such file or directory
@@ -301,8 +295,6 @@ After routing:
search_tidyup called
>>>>>>>>>>>>>>>> Local deliveries >>>>>>>>>>>>>>>>

--------> userx@??? <--------
- locking TESTSUITE/spool/db/retry.lockfile
- locked TESTSUITE/spool/db/retry.lockfile
EXIM_DBOPEN: file <TESTSUITE/spool/db/retry> dir <TESTSUITE/spool/db> flags=O_RDONLY
returned from EXIM_DBOPEN: (nil)
failed to open DB file TESTSUITE/spool/db/retry: No such file or directory
@@ -458,8 +450,6 @@ body_linecount=1 message_linecount=8
DSN: set orcpt: flags: 0x0
Delivery address list:
userx@???
- locking TESTSUITE/spool/db/retry.lockfile
- locked TESTSUITE/spool/db/retry.lockfile
EXIM_DBOPEN: file <TESTSUITE/spool/db/retry> dir <TESTSUITE/spool/db> flags=O_RDONLY
returned from EXIM_DBOPEN: (nil)
failed to open DB file TESTSUITE/spool/db/retry: No such file or directory
@@ -495,8 +485,6 @@ After routing:
search_tidyup called
>>>>>>>>>>>>>>>> Local deliveries >>>>>>>>>>>>>>>>

--------> userx@??? <--------
- locking TESTSUITE/spool/db/retry.lockfile
- locked TESTSUITE/spool/db/retry.lockfile
EXIM_DBOPEN: file <TESTSUITE/spool/db/retry> dir <TESTSUITE/spool/db> flags=O_RDONLY
returned from EXIM_DBOPEN: (nil)
failed to open DB file TESTSUITE/spool/db/retry: No such file or directory
@@ -556,8 +544,6 @@ Succeeded addresses:
Failed addresses:
Deferred addresses:
userx@???
- locking TESTSUITE/spool/db/retry.lockfile
- locked TESTSUITE/spool/db/retry.lockfile
EXIM_DBOPEN: file <TESTSUITE/spool/db/retry> dir <TESTSUITE/spool/db> flags=O_RDWR
returned from EXIM_DBOPEN: 0xAAAAAAAA
opened hints database TESTSUITE/spool/db/retry: flags=O_RDWR
@@ -575,9 +561,9 @@ failing_interval=ttt message_age=ttt
Writing retry data for T:userx@???
first failed=dddd last try=dddd next try=+86400 expired=0
errno=-22 more_errno=dd mailbox is full (MTA-imposed quota exceeded while writing to tmp/MAILDIR.myhost.test.ex)
- dbfn_write: key=T:userx@??? datalen NNN
+ dbfn_write: key=T:userx@??? datalen 154
EXIM_DBCLOSE(0xAAAAAAAA)
- closed hints database and lockfile
+ closed hints database
end of retry processing
delivery deferred: update_spool=1 header_rewritten=0
Writing spool header file: TESTSUITE/spool//input//hdr.10HmaZ-000000005vi-0000
@@ -663,8 +649,6 @@ body_linecount=1 message_linecount=8
DSN: set orcpt: flags: 0x0
Delivery address list:
userx@???
- locking TESTSUITE/spool/db/retry.lockfile
- locked TESTSUITE/spool/db/retry.lockfile
EXIM_DBOPEN: file <TESTSUITE/spool/db/retry> dir <TESTSUITE/spool/db> flags=O_RDONLY
returned from EXIM_DBOPEN: 0xAAAAAAAA
opened hints database TESTSUITE/spool/db/retry: flags=O_RDONLY
@@ -681,7 +665,7 @@ no domain retry record
no address retry record
userx@???: queued for routing
EXIM_DBCLOSE(0xAAAAAAAA)
- closed hints database and lockfile
+ closed hints database
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

routing userx@???
--------> r1 router <--------
@@ -707,8 +691,6 @@ After routing:
search_tidyup called
>>>>>>>>>>>>>>>> Local deliveries >>>>>>>>>>>>>>>>

--------> userx@??? <--------
- locking TESTSUITE/spool/db/retry.lockfile
- locked TESTSUITE/spool/db/retry.lockfile
EXIM_DBOPEN: file <TESTSUITE/spool/db/retry> dir <TESTSUITE/spool/db> flags=O_RDONLY
returned from EXIM_DBOPEN: 0xAAAAAAAA
opened hints database TESTSUITE/spool/db/retry: flags=O_RDONLY
@@ -717,7 +699,7 @@ search_tidyup called
retry record exists: age=ttt (max 1w)
time to retry = tttt expired = 0
EXIM_DBCLOSE(0xAAAAAAAA)
- closed hints database and lockfile
+ closed hints database
search_tidyup called
changed uid/gid: local delivery to userx <userx@???> transport=t1
uid=CALLER_UID gid=CALLER_GID pid=p1245
@@ -760,8 +742,6 @@ Succeeded addresses:
Failed addresses:
Deferred addresses:
userx@???
- locking TESTSUITE/spool/db/retry.lockfile
- locked TESTSUITE/spool/db/retry.lockfile
EXIM_DBOPEN: file <TESTSUITE/spool/db/retry> dir <TESTSUITE/spool/db> flags=O_RDWR
returned from EXIM_DBOPEN: 0xAAAAAAAA
opened hints database TESTSUITE/spool/db/retry: flags=O_RDWR
@@ -779,9 +759,9 @@ failing_interval=ttt message_age=ttt
Writing retry data for T:userx@???
first failed=dddd last try=dddd next try=+86400 expired=0
errno=-22 more_errno=dd mailbox is full (MTA-imposed quota exceeded while writing to tmp/MAILDIR.myhost.test.ex)
- dbfn_write: key=T:userx@??? datalen NNN
+ dbfn_write: key=T:userx@??? datalen 154
EXIM_DBCLOSE(0xAAAAAAAA)
- closed hints database and lockfile
+ closed hints database
end of retry processing
delivery deferred: update_spool=1 header_rewritten=0
Writing spool header file: TESTSUITE/spool//input//hdr.10HmbA-000000005vi-0000
diff --git a/test/stderr/5006 b/test/stderr/5006
index 53a83bcd1..131065b25 100644
--- a/test/stderr/5006
+++ b/test/stderr/5006
@@ -72,8 +72,6 @@ body_linecount=1 message_linecount=8
DSN: set orcpt: flags: 0x0
Delivery address list:
userx@???
- locking TESTSUITE/spool/db/retry.lockfile
- locked TESTSUITE/spool/db/retry.lockfile
EXIM_DBOPEN: file <TESTSUITE/spool/db/retry> dir <TESTSUITE/spool/db> flags=O_RDONLY
returned from EXIM_DBOPEN: (nil)
failed to open DB file TESTSUITE/spool/db/retry: No such file or directory
@@ -109,8 +107,6 @@ After routing:
search_tidyup called
>>>>>>>>>>>>>>>> Local deliveries >>>>>>>>>>>>>>>>

--------> userx@??? <--------
- locking TESTSUITE/spool/db/retry.lockfile
- locked TESTSUITE/spool/db/retry.lockfile
EXIM_DBOPEN: file <TESTSUITE/spool/db/retry> dir <TESTSUITE/spool/db> flags=O_RDONLY
returned from EXIM_DBOPEN: (nil)
failed to open DB file TESTSUITE/spool/db/retry: No such file or directory
diff --git a/test/stdout/0543 b/test/stdout/0543
index 9a99cddf2..c53cb62ad 100644
--- a/test/stdout/0543
+++ b/test/stdout/0543
@@ -1,5 +1,5 @@
+++++++++++++++++++++++++++
-** Failed to open database lock file TESTSUITE/spool/db/wait-smtp.lockfile: No such file or directory
+** Failed to open hintsdb TESTSUITE/spool/db/wait-smtp: No such file or directory

******** SERVER ********
Listening on port 1224 ...

--
## subscription configuration (requires account):
## https://lists.exim.org/mailman3/postorius/lists/exim-cvs.lists.exim.org/
## unsubscribe (doesn't require an account):
## exim-cvs-unsubscribe@???
## Exim details at http://www.exim.org/
## Please use the Wiki with this list - http://wiki.exim.org/