s/\d\d-\w\w\w-\d\d\d\d\s\d\d:\d\d:\d\d\s[-+]\d\d\d\d,/06-Sep-1999 15:52:48 +0100,/gx;
# Dates/times in debugging output for writing retry records
- if (/^ first failed=(\d+) last try=(\d+) next try=(\d+) (.*)$/)
+ if (/^(.+)first failed=(\d+) last try=(\d+) next try=(\d+) (.*)$/)
{
- my($next) = $3 - $2;
- $_ = " first failed=dddd last try=dddd next try=+$next $4\n";
+ my($next) = $4 - $3;
+ $_ = "$1first failed=dddd last try=dddd next try=+$next $5\n";
}
- s/^(\s*)now=\d+ first_failed=\d+ next_try=\d+ expired=(\w)/$1now=tttt first_failed=tttt next_try=tttt expired=$2/;
- s/^(\s*)received_time=\d+ diff=\d+ timeout=(\d+)/$1received_time=tttt diff=tttt timeout=$2/;
+ s/^(.*)now=\d+ first_failed=\d+ next_try=\d+ expired=(\w)/$1now=tttt first_failed=tttt next_try=tttt expired=$2/;
+ s/^(.*)received_time=\d+ diff=\d+ timeout=(\d+)/$1received_time=tttt diff=tttt timeout=$2/;
# Time to retry may vary
s/time to retry = \S+/time to retry = tttt/;
next if /lock(?:ing|ed) .*\/spool\/db\/[^.]+\.lockfile$/;
s/closed hints database\K and lockfile$//;
+ # Hints DBs with transactions are provider-dependent, and flow changes
+ # to take advantage of them need different opens and different flags.
+ # Drop all the debug output for opens and closes.
+ if (/EXIM_DBOPEN(_MULTI)?: file <.*spool\/db\/retry>/)
+ {
+ $_ = <IN>;
+ next if (/returned from EXIM_DBOPEN(_MULTI)?: 0x[[:xdigit:]]+$/);
+ $_ = <IN>;
+ <IN> if (/returned from EXIM_DBOPEN(_MULTI)?: \(nil\)$/);
+ next;
+ }
+ if (/EXIM_DBCLOSE(_MULTI)?/) { <IN>; next; }
+ next if /retaining retry hintsdb handle$/;
+ next if /using cached retry hintsdb (?:handle|nonpresence)$/;
+ if (/final close of cached retry db$/) { <IN>; <IN>; next; }
+ next if /dbfn_transaction_(?:start|commit)$/;
+
+ # Various hintsdb backends
+ s/(?:bdb|tdb|gdbm|ndbm|sqlite)
+ _open\(flags\ 0x(\d)
+ \ mode\ 0640\)
+ \ (?:No\ such\ file\ or\ directory|unable\ to\ open\ database\ file)$
+ /hintsdb_open(flags 0x$1 mode 0640) No such file or directory/x;
+
# 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;
next if /failed to load readline:/;
- # Some DBM libraries seem to make DBM files on opening with O_RDWR without
- # O_CREAT; other's don't. In the latter case there is some debugging output
- # which is not present in the former. Skip the relevant lines (there are
- # three of them).
-
- if (/returned from EXIM_DBOPEN: \(nil\)/)
- {
- $_ .= <IN>;
- s?\Q$parm_cwd\E?TESTSUITE?g;
- if (/TESTSUITE\/spool\/db\/\S+ appears not to exist: trying to create/)
- { $_ = <IN>; next; }
- }
-
# Some tests turn on +expand debugging to check on expansions.
# Unfortunately, the Received: expansion varies, depending on whether TLS
# is compiled or not. So we must remove the relevant debugging if it is.
}
# Specific pointer values reported for DB operations change from run to run
- s/^(\s*returned from EXIM_DBOPEN: )(0x)?[0-9a-f]+/${1}0xAAAAAAAA/;
- s/^(\s*EXIM_DBCLOSE.)(0x)?[0-9a-f]+/${1}0xAAAAAAAA/;
+ s/(returned from EXIM_DBOPEN: )(0x)?[0-9a-f]+/${1}0xAAAAAAAA/;
+ s/(EXIM_DBCLOSE.)(0x)?[0-9a-f]+/${1}0xAAAAAAAA/;
# Platform-dependent output during MySQL startup
next if /PerconaFT file system space/;
###################
# The "dbmbuild" command runs exim_dbmbuild. This is used both to test the
-# utility and to make DBM files for testing DBM lookups.
+# utility and to make hintsdb files for testing hintsdb lookups.
if (/^dbmbuild\s+(\S+)\s+(\S+)/)
{
# The "dump" command runs exim_dumpdb. On different systems, the output for
# some types of dump may appear in a different order because it's just hauled
-# out of the DBM file. We can solve this by sorting. Ignore the leading
+# out of the hintsdb file. We can solve this by sorting. Ignore the leading
# date/time, as it will be flattened later during munging.
if (/^dump\s+(\S+)/)