# into the same standard values throughout the data from a single test.
# Message ids get this treatment (can't be made reliable for times), and
# times in dumped retry databases are also handled in a special way, as are
-# incoming port numbers.
+# incoming port numbers and PIDs.
# On entry to the subroutine, the file to write to is already opened with the
# name MUNGED. The input file name is the only argument to the subroutine.
# TLS resumption is not always supported by the build
next if /^tls_resumption_hosts =/;
next if /^-tls_resumption/;
+ next if /^host_name_extract = /;
# gsasl library version may not support some methods
s/250-AUTH ANONYMOUS PLAIN SCRAM-SHA-1\K SCRAM-SHA-256//;
)
/x;
- # Lines with a leading pid
- s/^(\d+)\s(?!(?:previous message|in\s))/new_value($1, "p%s", \$next_pid) . ' '/e;
+ # 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;
# Debugging lines for Exim terminations and process-generation
-
- s/^\s*\K(\d+)(?=\sexec\s.*\s-oPX$)/new_value($1, "%s", \$next_pid)/xe;
next if /(?:postfork: | fork(?:ing|ed) for )/;
# IP address lookups use gethostbyname() when IPv6 is not supported,
# Skip tls_advertise_hosts and hosts_require_tls checks when the options
# are unset, because tls ain't always there.
+ next if /^((>>>)?\s*host)? in tls_advertise_hosts\?$/;
next if /in\s(?:tls_advertise_hosts\?|hosts_require_tls\?)
\sno\s\((option\sunset|end\sof\slist)\)/x;
# Different builds will have different lookup types included
s/^\s*search_type \K\d+ \((\w+)\) quoting -1 \(none\)$/NN ($1) quoting -1 (none)/;
+ # and different numbers of lookup types result in different type-code letters,
+ # so convert them all to "0"
+ s%(?<!lsearch)[^ ](?=TESTSUITE/aux-fixed/(?:0414.list[12]|0464.domains)$)%0%;
# DISABLE_OCSP
next if /in hosts_requ(est|ire)_ocsp\? (no|yes)/;
next if /host in hosts_proxy\?/;
# PIPE_CONNECT
- next if / in (pipelining_connect_advertise_hosts|hosts_pipe_connect)?\? no /;
+ if ( /^(>>>)?\s*host in pipelining_connect_advertise_hosts\?$/ )
+ {
+ $_ = <IN>;
+ while ( /^(>>>)?\s*list element:/ ) { $_ = <IN>; }
+ goto RESET_AFTER_EXTRA_LINE_READ;
+ }
+ next if / in (?:pipelining_connect_advertise_hosts|hosts_pipe_connect)?\? no /;
# Experimental_International
next if / in smtputf8_advertise_hosts\? no \(option unset\)/;
next if / in tls_advertise_requiretls?\? no \(end of list\)/;
# Experimental_LIMITS
+ if ( /^((>>>)?\s*host)? in limits_advertise_hosts\?$/ )
+ {
+ $_ = <IN>;
+ while ( /^(>>>)?\s*list element: !\*$/ ) { $_ = <IN>; }
+ goto RESET_AFTER_EXTRA_LINE_READ;
+ }
next if / in limits_advertise_hosts?\? no \(matched "!\*"\)/;
# TCP Fast Open
next if /^(ppppp )?setsockopt FASTOPEN: Network Error/;
+ # DISABLE_TLS_RESUME
+ # TLS resumption is not always supported by the build
+ next if /in tls_resumption_hosts\?/;
+ next if /RE '.outlook.com/;
+
# Environment cleaning
next if /\w+ in keep_environment\? (yes|no)/;
# Not all builds include DMARC
next if /^DMARC: no (dmarc_tld_file|sender_host_address)$/ ;
- # TLS resumption is not always supported by the build
- next if /in tls_resumption_hosts\?/;
-
# Platform differences in errno strings
s/ SMTP\(Operation timed out\)<</ SMTP(Connection timed out)<</;
s/^(\d\d:\d\d:\d\d\s+)(\d+)/$1 . new_value($2, "p%s", \$next_pid) . " "/mgxe;
s/(?<!post-)[Pp]rocess\K(\s\d+ )/new_value($1, "p%s", \$next_pid) . " "/gxe;
+ # Path in environment varies
+ s/ PATH=\K.*$/<munged>/;
+
# When Exim is checking the size of directories for maildir, it uses
# the check_dir_size() function to scan directories. Of course, the order
# of the files that are obtained using readdir() varies from system to
s/session: \K\((SSL_connect|gnutls_handshake)\): timed out/(tls lib connect fn): timed out/;
s/TLS error on connection from .*\K\((SSL_accept|gnutls_handshake)\): timed out/(tls lib accept fn): timed out/;
s/TLS error on connection from .*\K(SSL_accept: TCP connection closed by peer|\(gnutls_handshake\): The TLS connection was non-properly terminated.)/(tls lib accept fn): TCP connection closed by peer/;
- s/TLS session: \K\(gnutls_handshake\): No supported application protocol could be negotiated/(SSL_connect): error: <<detail omitted>>/;
+ s/TLS session: \K\(gnutls_handshake\): rxd alert: No supported application protocol could be negotiated/(SSL_connect): error: <<detail omitted>>/;
s/\(gnutls_handshake\): No common application protocol could be negotiated./(SSL_accept): error: <<detail omitted>>/;
}