summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--doc/doc-txt/ChangeLog3
-rw-r--r--src/src/lookups/mysql.c48
-rw-r--r--test/confs/2610 (renamed from test/confs/9100)4
-rw-r--r--test/log/2610 (renamed from test/log/9100)2
-rw-r--r--test/mail/2610.ph10 (renamed from test/mail/9100.CALLER)2
-rw-r--r--test/scripts/2610-MySQL/261068
-rw-r--r--test/scripts/2610-MySQL/REQUIRES1
-rw-r--r--test/scripts/2620-Postgresql/26201
-rw-r--r--test/scripts/9100-MySQL/910026
-rw-r--r--test/stderr/2610 (renamed from test/stderr/9100)279
-rw-r--r--test/stderr/262013
-rw-r--r--test/stdout/261031
-rw-r--r--test/stdout/26201
-rw-r--r--test/stdout/910026
14 files changed, 320 insertions, 185 deletions
diff --git a/doc/doc-txt/ChangeLog b/doc/doc-txt/ChangeLog
index 43446d8c2..2c2448537 100644
--- a/doc/doc-txt/ChangeLog
+++ b/doc/doc-txt/ChangeLog
@@ -55,6 +55,9 @@ JH/09 The "aveserver", "kavdaemon" and "mksd" interfaces are now not included
by the template makefile "src/EDITME". The "STREAM" support for an older
ClamAV interface method is removed.
+JH/10 Bug 2223: Fix mysql lookup returns for the no-data case (when the number of
+ rows affected is given instead).
+
Exim version 4.90
-----------------
diff --git a/src/src/lookups/mysql.c b/src/src/lookups/mysql.c
index ff1ef8325..8d101b27b 100644
--- a/src/src/lookups/mysql.c
+++ b/src/src/lookups/mysql.c
@@ -281,7 +281,7 @@ we return the number of rows affected by the command. In this event, we do NOT
want to cache the result; also the whole cache for the handle must be cleaned
up. Setting do_cache zero requests this. */
-if ((mysql_result = mysql_use_result(mysql_handle)) == NULL)
+if (!(mysql_result = mysql_use_result(mysql_handle)))
{
if ( mysql_field_count(mysql_handle) == 0 )
{
@@ -314,34 +314,32 @@ while ((mysql_row_data = mysql_fetch_row(mysql_result)))
if (result)
result = string_catn(result, US"\n", 1);
- if (num_fields == 1)
- {
- if (mysql_row_data[0] != NULL) /* NULL value yields nothing */
- {
- result = string_catn(result, US mysql_row_data[0],
- lengths[0]);
- (void) string_from_gstring(result);
- }
- }
+ if (num_fields != 1)
+ for (i = 0; i < num_fields; i++)
+ result = lf_quote(US fields[i].name, US mysql_row_data[i], lengths[i],
+ result);
- else for (i = 0; i < num_fields; i++)
- result = lf_quote(US fields[i].name, US mysql_row_data[i], lengths[i], result);
+ else if (mysql_row_data[0] != NULL) /* NULL value yields nothing */
+ result = string_catn(result, US mysql_row_data[0], lengths[0]);
}
/* more results? -1 = no, >0 = error, 0 = yes (keep looping)
This is needed because of the CLIENT_MULTI_RESULTS on mysql_real_connect(),
we don't expect any more results. */
-while((i = mysql_next_result(mysql_handle)) >= 0) {
- if(i == 0) { /* Just ignore more results */
- DEBUG(D_lookup) debug_printf("MYSQL: got unexpected more results\n");
- continue;
- }
+while((i = mysql_next_result(mysql_handle)) >= 0)
+ {
+ if(i == 0) /* Just ignore more results */
+ {
+ DEBUG(D_lookup) debug_printf("MYSQL: got unexpected more results\n");
+ continue;
+ }
- *errmsg = string_sprintf("MYSQL: lookup result error when checking for more results: %s\n",
- mysql_error(mysql_handle));
- goto MYSQL_EXIT;
-}
+ *errmsg = string_sprintf(
+ "MYSQL: lookup result error when checking for more results: %s\n",
+ mysql_error(mysql_handle));
+ goto MYSQL_EXIT;
+ }
/* If result is NULL then no data has been found and so we return FAIL.
Otherwise, we must terminate the string which has been built; string_cat()
@@ -352,11 +350,6 @@ if (!result)
yield = FAIL;
*errmsg = US"MYSQL: no data found";
}
-else
- {
- (void) string_from_gstring(result);
- store_reset(result->s + result->ptr + 1);
- }
/* Get here by goto from various error checks and from the case where no data
was read (e.g. an update query). */
@@ -372,7 +365,8 @@ if (mysql_result) mysql_free_result(mysql_result);
if (result)
{
- *resultptr = result->s;
+ *resultptr = string_from_gstring(result);
+ store_reset(result->s + (result->size = result->ptr + 1));
return OK;
}
else
diff --git a/test/confs/9100 b/test/confs/2610
index a031f44de..9e2217215 100644
--- a/test/confs/9100
+++ b/test/confs/2610
@@ -1,4 +1,4 @@
-# Exim test configuration 9100
+# Exim test configuration 2610
.include DIR/aux-var/std_conf_prefix
@@ -11,7 +11,7 @@ hostlist relay_hosts = net-mysql;select * from them where id='$sender_host_add
acl_smtp_rcpt = check_recipient
-mysql_servers = localhost/test/root/
+mysql_servers = 127.0.0.1::PORT_N/test/root/
# ----- ACL -----
diff --git a/test/log/9100 b/test/log/2610
index 5ca026f38..38ea30eb6 100644
--- a/test/log/9100
+++ b/test/log/2610
@@ -1,3 +1,3 @@
1999-03-02 09:44:33 10HmaX-0005vi-00 <= CALLER@myhost.test.ex U=CALLER P=local S=sss
-1999-03-02 09:44:33 10HmaX-0005vi-00 => CALLER <CALLER@myhost.test.ex> R=r1 T=t1
+1999-03-02 09:44:33 10HmaX-0005vi-00 => ph10 <ph10@myhost.test.ex> R=r1 T=t1
1999-03-02 09:44:33 10HmaX-0005vi-00 Completed
diff --git a/test/mail/9100.CALLER b/test/mail/2610.ph10
index 1e1294c18..3305d49bb 100644
--- a/test/mail/9100.CALLER
+++ b/test/mail/2610.ph10
@@ -2,7 +2,7 @@ From CALLER@myhost.test.ex Tue Mar 02 09:44:33 1999
Received: from CALLER by myhost.test.ex with local (Exim x.yz)
(envelope-from <CALLER@myhost.test.ex>)
id 10HmaX-0005vi-00
- for CALLER@myhost.test.ex; Tue, 2 Mar 1999 09:44:33 +0000
+ for ph10@myhost.test.ex; Tue, 2 Mar 1999 09:44:33 +0000
Message-Id: <E10HmaX-0005vi-00@myhost.test.ex>
From: CALLER_NAME <CALLER@myhost.test.ex>
Date: Tue, 2 Mar 1999 09:44:33 +0000
diff --git a/test/scripts/2610-MySQL/2610 b/test/scripts/2610-MySQL/2610
new file mode 100644
index 000000000..b3e36a5a7
--- /dev/null
+++ b/test/scripts/2610-MySQL/2610
@@ -0,0 +1,68 @@
+# mysql lookups
+#
+# first, populate a DB to test against
+sudo rm -fr DIR/mysql
+perl
+system 'mysql_install_db --datadir=DIR/mysql';
+****
+sudo rm test-stdout
+#
+# start a db server
+background
+mysqld_safe --datadir=DIR/mysql --log-error=DIR/mysql/log --port=PORT_N --socket=DIR/mysql/sock --pid-file=DIR/mysql/pidfile
+****
+sleep 1
+sudo rm test-stderr-server
+#
+# insert some data
+perl
+system 'mysqladmin --protocol=TCP -P PORT_N -u root create test';
+system 'mysql --protocol=TCP -P PORT_N -u root -D test \
+ -e "CREATE TABLE them ( name text, id text ); \
+ INSERT INTO them VALUES ( \'Philip Hazel\', \'ph10\' ); \
+ INSERT INTO them VALUES ( \'Aristotle\', \'aaaa\' ); \
+ INSERT INTO them VALUES ( \'\', \'nothing\' ); \
+ INSERT INTO them VALUES ( \'\"stquot\', \'quote2\' ); \
+ INSERT INTO them VALUES ( CONCAT(\'before\', CHAR(13), CHAR(10), \'after\'), \'newline\' ); \
+ INSERT INTO them VALUES ( CONCAT(\'x\', CHAR(9), \'x\'), \'tab\' ); \
+ INSERT INTO them VALUES ( CONCAT(CHAR(39), \'stquot\'), \'quote1\' ); \
+ "';
+****
+#
+#
+exim -d-all+lookup -be
+${lookup mysql {select name from them where id='ph10';}}
+${lookup mysql {select name from them where id='ph10';}}
+${lookup mysql {select name from them where id='xxxx';}}
+${lookup mysql {select name from them where id='nothing';}}
+${lookup mysql {select id,name from them where id='nothing';}}
+${lookup mysql {delete from them where id='nonexist';}}
+${lookup mysql {select * from them where id='quote';}}
+${lookup mysql {select * from them where id='filter';}}
+${lookup mysql {select * from them where id='quote2';}}
+${lookup mysql {select * from them where id='nlonly';}}
+${lookup mysql {servers=x:127.0.0.1::PORT_N; select name from them where id='ph10';}}
+${lookup mysql {servers=127.0.0.1::PORT_N:x; select name from them where id='ph10';}}
+${lookup mysql {servers=127.0.0.1::PORT_N/test/root/:x; select name from them where id='ph10';}}
+${lookup mysql {servers=HOSTIPV4::PORT_N/test/root/:127.0.0.1::PORT_N; select name from them where id='ph10';}}
+${lookup mysql {servers=localhost(DIR/mysql/sock)/test/root/; select name from them where id='ph10';}}
+x
+${lookup mysql {SELECT name FROM them WHERE id IN ('ph10', 'aaaa');}}
+${lookup mysql {SELECT * FROM them WHERE id IN ('ph10', 'aaaa');}}
+${lookup mysql {delete from them where id='aaaa'}}
+****
+exim -d -bh 10.0.0.0
+mail from:<a@b>
+rcpt to:<c@d>
+quit
+****
+exim -odi -d ph10
+Test message
+.
+****
+#
+perl
+system 'mysqladmin --protocol=TCP -P PORT_N -u root shutdown';
+****
+killdaemon
+sudo rm -fr DIR/mysql
diff --git a/test/scripts/2610-MySQL/REQUIRES b/test/scripts/2610-MySQL/REQUIRES
new file mode 100644
index 000000000..e11f866d0
--- /dev/null
+++ b/test/scripts/2610-MySQL/REQUIRES
@@ -0,0 +1 @@
+lookup mysql
diff --git a/test/scripts/2620-Postgresql/2620 b/test/scripts/2620-Postgresql/2620
index d0dd00190..cf45726f4 100644
--- a/test/scripts/2620-Postgresql/2620
+++ b/test/scripts/2620-Postgresql/2620
@@ -43,6 +43,7 @@ ${lookup pgsql {servers=(DIR/pgsql/.s.PGSQL.PORT_N)/test/CALLER/:x; select name
x
${lookup pgsql {SELECT name FROM them WHERE id IN ('ph10', 'aaaa');}}
${lookup pgsql {SELECT * FROM them WHERE id IN ('ph10', 'aaaa');}}
+${lookup pgsql {delete from them where id='aaaa'}}
****
exim -d -bh 10.0.0.0
mail from:<a@b>
diff --git a/test/scripts/9100-MySQL/9100 b/test/scripts/9100-MySQL/9100
deleted file mode 100644
index fdf2caf9a..000000000
--- a/test/scripts/9100-MySQL/9100
+++ /dev/null
@@ -1,26 +0,0 @@
-# mysql lookups - expects specific data
-exim -d-all+lookup -be
-${lookup mysql {select name from them where id='ph10';}}
-${lookup mysql {select name from them where id='ph10';}}
-${lookup mysql {select name from them where id='xxxx';}}
-${lookup mysql {select name from them where id='nothing';}}
-${lookup mysql {select id,name from them where id='nothing';}}
-${lookup mysql {delete from them where id='nonexist';}}
-${lookup mysql {select * from them where id='quote';}}
-${lookup mysql {select * from them where id='filter';}}
-${lookup mysql {select * from them where id='quote2';}}
-${lookup mysql {select * from them where id='nlonly';}}
-${lookup mysql {servers=x:localhost; select name from them where id='ph10';}}
-${lookup mysql {servers=localhost:x; select name from them where id='ph10';}}
-${lookup mysql {servers=localhost/test/root/:x; select name from them where id='ph10';}}
-${lookup mysql {servers=HOST_IPV4/test/root/:localhost; select name from them where id='ph10';}}
-****
-exim -d -bh 10.0.0.0
-mail from:<a@b>
-rcpt to:<c@d>
-quit
-****
-exim -odi -d ph10
-Test message
-.
-****
diff --git a/test/stderr/9100 b/test/stderr/2610
index 60c63ba08..60d964387 100644
--- a/test/stderr/9100
+++ b/test/stderr/2610
@@ -1,24 +1,26 @@
+Tue Mar 02 09:44:33 1999 PerconaFT file system space is low
+mysqladmin: CREATE DATABASE failed; error: 'Can't create database 'test'; database exists'
Exim version x.yz ....
configuration file is TESTSUITE/test-config
admin user
search_open: mysql "NULL"
search_find: file="NULL"
- key="select name from them where id='CALLER';" partial=-1 affix=NULL starflags=0
+ key="select name from them where id='ph10';" partial=-1 affix=NULL starflags=0
LRU list:
internal_search_find: file="NULL"
- type=mysql key="select name from them where id='CALLER';"
-database lookup required for select name from them where id='CALLER';
-MySQL query: select name from them where id='CALLER';
-MYSQL new connection: host=localhost port=0 socket=NULL database=test user=root
+ type=mysql key="select name from them where id='ph10';"
+database lookup required for select name from them where id='ph10';
+MySQL query: select name from them where id='ph10';
+MYSQL new connection: host=127.0.0.1 port=1223 socket=NULL database=test user=root
lookup yielded: Philip Hazel
search_open: mysql "NULL"
cached open
search_find: file="NULL"
- key="select name from them where id='CALLER';" partial=-1 affix=NULL starflags=0
+ key="select name from them where id='ph10';" partial=-1 affix=NULL starflags=0
LRU list:
internal_search_find: file="NULL"
- type=mysql key="select name from them where id='CALLER';"
-cached data used for lookup of select name from them where id='CALLER';
+ type=mysql key="select name from them where id='ph10';"
+cached data used for lookup of select name from them where id='ph10';
lookup yielded: Philip Hazel
search_open: mysql "NULL"
cached open
@@ -29,7 +31,7 @@ internal_search_find: file="NULL"
type=mysql key="select name from them where id='xxxx';"
database lookup required for select name from them where id='xxxx';
MySQL query: select name from them where id='xxxx';
-MYSQL using cached connection for localhost/test/root
+MYSQL using cached connection for 127.0.0.1:1223/test/root
MYSQL: no data found
lookup failed
search_open: mysql "NULL"
@@ -41,9 +43,8 @@ internal_search_find: file="NULL"
type=mysql key="select name from them where id='nothing';"
database lookup required for select name from them where id='nothing';
MySQL query: select name from them where id='nothing';
-MYSQL using cached connection for localhost/test/root
-MYSQL: no data found
-lookup failed
+MYSQL using cached connection for 127.0.0.1:1223/test/root
+lookup yielded:
search_open: mysql "NULL"
cached open
search_find: file="NULL"
@@ -53,7 +54,7 @@ internal_search_find: file="NULL"
type=mysql key="select id,name from them where id='nothing';"
database lookup required for select id,name from them where id='nothing';
MySQL query: select id,name from them where id='nothing';
-MYSQL using cached connection for localhost/test/root
+MYSQL using cached connection for 127.0.0.1:1223/test/root
lookup yielded: id=nothing name=""
search_open: mysql "NULL"
cached open
@@ -64,7 +65,7 @@ internal_search_find: file="NULL"
type=mysql key="delete from them where id='nonexist';"
database lookup required for delete from them where id='nonexist';
MySQL query: delete from them where id='nonexist';
-MYSQL using cached connection for localhost/test/root
+MYSQL using cached connection for 127.0.0.1:1223/test/root
MYSQL: query was not one that returns data
lookup forced cache cleanup
lookup yielded: 0
@@ -77,8 +78,9 @@ internal_search_find: file="NULL"
type=mysql key="select * from them where id='quote';"
database lookup required for select * from them where id='quote';
MySQL query: select * from them where id='quote';
-MYSQL using cached connection for localhost/test/root
-lookup yielded: id=quote name="\"Q\" Oted" home=/home/quoted mail=quoted@xxx
+MYSQL using cached connection for 127.0.0.1:1223/test/root
+MYSQL: no data found
+lookup failed
search_open: mysql "NULL"
cached open
search_find: file="NULL"
@@ -88,9 +90,9 @@ internal_search_find: file="NULL"
type=mysql key="select * from them where id='filter';"
database lookup required for select * from them where id='filter';
MySQL query: select * from them where id='filter';
-MYSQL using cached connection for localhost/test/root
-lookup yielded: id=filter name=filter home=filter mail="#Exim filter
-deliver postmaster"
+MYSQL using cached connection for 127.0.0.1:1223/test/root
+MYSQL: no data found
+lookup failed
search_open: mysql "NULL"
cached open
search_find: file="NULL"
@@ -100,8 +102,8 @@ internal_search_find: file="NULL"
type=mysql key="select * from them where id='quote2';"
database lookup required for select * from them where id='quote2';
MySQL query: select * from them where id='quote2';
-MYSQL using cached connection for localhost/test/root
-lookup yielded: id=quote2 name="\"qnosp" home=/home/q2 mail=""
+MYSQL using cached connection for 127.0.0.1:1223/test/root
+lookup yielded: name="\"stquot" id=quote2
search_open: mysql "NULL"
cached open
search_find: file="NULL"
@@ -111,57 +113,105 @@ internal_search_find: file="NULL"
type=mysql key="select * from them where id='nlonly';"
database lookup required for select * from them where id='nlonly';
MySQL query: select * from them where id='nlonly';
-MYSQL using cached connection for localhost/test/root
-lookup yielded: id=nlonly name=filter home=filter mail="Before
-After"
+MYSQL using cached connection for 127.0.0.1:1223/test/root
+MYSQL: no data found
+lookup failed
search_open: mysql "NULL"
cached open
search_find: file="NULL"
- key="servers=x:localhost; select name from them where id='CALLER';" partial=-1 affix=NULL starflags=0
+ key="servers=x:127.0.0.1::1223; select name from them where id='ph10';" partial=-1 affix=NULL starflags=0
LRU list:
internal_search_find: file="NULL"
- type=mysql key="servers=x:localhost; select name from them where id='CALLER';"
-database lookup required for servers=x:localhost; select name from them where id='CALLER';
-MySQL query: servers=x:localhost; select name from them where id='CALLER';
+ type=mysql key="servers=x:127.0.0.1::1223; select name from them where id='ph10';"
+database lookup required for servers=x:127.0.0.1::1223; select name from them where id='ph10';
+MySQL query: servers=x:127.0.0.1::1223; select name from them where id='ph10';
lookup deferred: MySQL server "x" not found in mysql_servers
search_open: mysql "NULL"
cached open
search_find: file="NULL"
- key="servers=localhost:x; select name from them where id='CALLER';" partial=-1 affix=NULL starflags=0
+ key="servers=127.0.0.1::1223:x; select name from them where id='ph10';" partial=-1 affix=NULL starflags=0
+LRU list:
+internal_search_find: file="NULL"
+ type=mysql key="servers=127.0.0.1::1223:x; select name from them where id='ph10';"
+database lookup required for servers=127.0.0.1::1223:x; select name from them where id='ph10';
+MySQL query: servers=127.0.0.1::1223:x; select name from them where id='ph10';
+MYSQL using cached connection for 127.0.0.1:1223/test/root
+lookup yielded: Philip Hazel
+search_open: mysql "NULL"
+ cached open
+search_find: file="NULL"
+ key="servers=127.0.0.1::1223/test/root/:x; select name from them where id='ph10';" partial=-1 affix=NULL starflags=0
+LRU list:
+internal_search_find: file="NULL"
+ type=mysql key="servers=127.0.0.1::1223/test/root/:x; select name from them where id='ph10';"
+database lookup required for servers=127.0.0.1::1223/test/root/:x; select name from them where id='ph10';
+MySQL query: servers=127.0.0.1::1223/test/root/:x; select name from them where id='ph10';
+MYSQL using cached connection for 127.0.0.1:1223/test/root
+lookup yielded: Philip Hazel
+search_open: mysql "NULL"
+ cached open
+search_find: file="NULL"
+ key="servers=ip4.ip4.ip4.ip4::1223/test/root/:127.0.0.1::1223; select name from them where id='ph10';" partial=-1 affix=NULL starflags=0
LRU list:
internal_search_find: file="NULL"
- type=mysql key="servers=localhost:x; select name from them where id='CALLER';"
-database lookup required for servers=localhost:x; select name from them where id='CALLER';
-MySQL query: servers=localhost:x; select name from them where id='CALLER';
-MYSQL using cached connection for localhost/test/root
+ type=mysql key="servers=ip4.ip4.ip4.ip4::1223/test/root/:127.0.0.1::1223; select name from them where id='ph10';"
+database lookup required for servers=ip4.ip4.ip4.ip4::1223/test/root/:127.0.0.1::1223; select name from them where id='ph10';
+MySQL query: servers=ip4.ip4.ip4.ip4::1223/test/root/:127.0.0.1::1223; select name from them where id='ph10';
+MYSQL new connection: host=ip4.ip4.ip4.ip4 port=1223 socket=NULL database=test user=root
lookup yielded: Philip Hazel
search_open: mysql "NULL"
cached open
search_find: file="NULL"
- key="servers=localhost/test/root/:x; select name from them where id='CALLER';" partial=-1 affix=NULL starflags=0
+ key="servers=localhost(TESTSUITE/mysql/sock)/test/root/; select name from them where id='ph10';" partial=-1 affix=NULL starflags=0
LRU list:
internal_search_find: file="NULL"
- type=mysql key="servers=localhost/test/root/:x; select name from them where id='CALLER';"
-database lookup required for servers=localhost/test/root/:x; select name from them where id='CALLER';
-MySQL query: servers=localhost/test/root/:x; select name from them where id='CALLER';
-MYSQL using cached connection for localhost/test/root
+ type=mysql key="servers=localhost(TESTSUITE/mysql/sock)/test/root/; select name from them where id='ph10';"
+database lookup required for servers=localhost(TESTSUITE/mysql/sock)/test/root/; select name from them where id='ph10';
+MySQL query: servers=localhost(TESTSUITE/mysql/sock)/test/root/; select name from them where id='ph10';
+MYSQL new connection: host=localhost port=0 socket=TESTSUITE/mysql/sock database=test user=root
lookup yielded: Philip Hazel
search_open: mysql "NULL"
cached open
search_find: file="NULL"
- key="servers=HOST_IPV4/test/root/:localhost; select name from them where id='CALLER';" partial=-1 affix=NULL starflags=0
+ key="SELECT name FROM them WHERE id IN ('ph10', 'aaaa');" partial=-1 affix=NULL starflags=0
LRU list:
internal_search_find: file="NULL"
- type=mysql key="servers=HOST_IPV4/test/root/:localhost; select name from them where id='CALLER';"
-database lookup required for servers=HOST_IPV4/test/root/:localhost; select name from them where id='CALLER';
-MySQL query: servers=HOST_IPV4/test/root/:localhost; select name from them where id='CALLER';
-MYSQL new connection: host=HOST_IPV4 port=0 socket=NULL database=test user=root
-MYSQL connection failed: Unknown MySQL server host 'HOST_IPV4' (1)
-MYSQL using cached connection for localhost/test/root
+ type=mysql key="SELECT name FROM them WHERE id IN ('ph10', 'aaaa');"
+database lookup required for SELECT name FROM them WHERE id IN ('ph10', 'aaaa');
+MySQL query: SELECT name FROM them WHERE id IN ('ph10', 'aaaa');
+MYSQL using cached connection for 127.0.0.1:1223/test/root
lookup yielded: Philip Hazel
+Aristotle
+search_open: mysql "NULL"
+ cached open
+search_find: file="NULL"
+ key="SELECT * FROM them WHERE id IN ('ph10', 'aaaa');" partial=-1 affix=NULL starflags=0
+LRU list:
+internal_search_find: file="NULL"
+ type=mysql key="SELECT * FROM them WHERE id IN ('ph10', 'aaaa');"
+database lookup required for SELECT * FROM them WHERE id IN ('ph10', 'aaaa');
+MySQL query: SELECT * FROM them WHERE id IN ('ph10', 'aaaa');
+MYSQL using cached connection for 127.0.0.1:1223/test/root
+lookup yielded: name="Philip Hazel" id=ph10
+name=Aristotle id=aaaa
+search_open: mysql "NULL"
+ cached open
+search_find: file="NULL"
+ key="delete from them where id='aaaa'" partial=-1 affix=NULL starflags=0
+LRU list:
+internal_search_find: file="NULL"
+ type=mysql key="delete from them where id='aaaa'"
+database lookup required for delete from them where id='aaaa'
+MySQL query: delete from them where id='aaaa'
+MYSQL using cached connection for 127.0.0.1:1223/test/root
+MYSQL: query was not one that returns data
+lookup forced cache cleanup
+lookup yielded: 1
search_tidyup called
-close MYSQL connection: localhost/test/root
->>>>>>>>>>>>>>>> Exim pid=pppp terminating with rc=0 >>>>>>>>>>>>>>>>
+close MYSQL connection: localhost(TESTSUITE/mysql/sock)/test/root
+close MYSQL connection: ip4.ip4.ip4.ip4:1223/test/root
+close MYSQL connection: 127.0.0.1:1223/test/root
+>>>>>>>>>>>>>>>> Exim pid=pppp (main: expansion test) terminating with rc=0 >>>>>>>>>>>>>>>>
Exim version x.yz ....
changed uid/gid: forcing real = effective
uid=uuuu gid=CALLER_GID pid=pppp
@@ -189,6 +239,8 @@ host in helo_accept_junk_hosts? no (option unset)
SMTP>> 220 myhost.test.ex ESMTP Exim x.yz Tue, 2 Mar 1999 09:44:33 +0000
smtp_setup_msg entered
SMTP<< mail from:<a@b>
+spool directory space = nnnnnK inodes = nnnnn check_space = 10240K inodes = 100 msg_size = 0
+log directory space = nnnnnK inodes = nnnnn check_space = 10240K inodes = 100
SMTP>> 250 OK
SMTP<< rcpt to:<c@d>
using ACL "check_recipient"
@@ -196,7 +248,7 @@ processing "accept"
check domains = +local_domains
d in "@"? no (end of list)
d in "+local_domains"? no (end of list)
-accept: condition test failed
+accept: condition test failed in ACL "check_recipient"
processing "accept"
check hosts = +relay_hosts
search_open: mysql "NULL"
@@ -207,14 +259,16 @@ internal_search_find: file="NULL"
type=mysql key="select * from them where id='10.0.0.0'"
database lookup required for select * from them where id='10.0.0.0'
MySQL query: select * from them where id='10.0.0.0'
-MYSQL new connection: host=localhost port=0 socket=NULL database=test user=root
+MYSQL new connection: host=127.0.0.1 port=1223 socket=NULL database=test user=root
MYSQL: no data found
lookup failed
host in "net-mysql;select * from them where id='10.0.0.0'"? no (end of list)
host in "+relay_hosts"? no (end of list)
-accept: condition test failed
+accept: condition test failed in ACL "check_recipient"
processing "deny"
-deny: condition test succeeded
+ message: relay not permitted
+deny: condition test succeeded in ACL "check_recipient"
+end of ACL "check_recipient": DENY
SMTP>> 550 relay not permitted
LOG: MAIN REJECT
H=[10.0.0.0] F=<a@b> rejected RCPT <c@d>: relay not permitted
@@ -223,8 +277,8 @@ SMTP>> 221 myhost.test.ex closing connection
LOG: smtp_connection MAIN
SMTP connection from [10.0.0.0] closed by QUIT
search_tidyup called
-close MYSQL connection: localhost/test/root
->>>>>>>>>>>>>>>> Exim pid=pppp terminating with rc=0 >>>>>>>>>>>>>>>>
+close MYSQL connection: 127.0.0.1:1223/test/root
+>>>>>>>>>>>>>>>> Exim pid=pppp (main) terminating with rc=0 >>>>>>>>>>>>>>>>
Exim version x.yz ....
changed uid/gid: forcing real = effective
uid=uuuu gid=CALLER_GID pid=pppp
@@ -237,9 +291,11 @@ getpwnam() succeeded uid=CALLER_UID gid=CALLER_GID
originator: uid=CALLER_UID gid=CALLER_GID login=CALLER name=CALLER_NAME
sender address = CALLER@myhost.test.ex
set_process_info: pppp accepting a local non-SMTP message from <CALLER@myhost.test.ex>
+spool directory space = nnnnnK inodes = nnnnn check_space = 10240K inodes = 100 msg_size = 0
+log directory space = nnnnnK inodes = nnnnn check_space = 10240K inodes = 100
Sender: CALLER@myhost.test.ex
Recipients:
- CALLER
+ ph10
search_tidyup called
>>Headers received:
@@ -251,15 +307,21 @@ I Message-Id: <E10HmaX-0005vi-00@myhost.test.ex>
F From: CALLER_NAME <CALLER@myhost.test.ex>
Date: Tue, 2 Mar 1999 09:44:33 +0000
+Data file name: TESTSUITE/spool//input//10HmaX-0005vi-00-D
Data file written for message 10HmaX-0005vi-00
>>Generated Received: header line
P Received: from CALLER by myhost.test.ex with local (Exim x.yz)
(envelope-from <CALLER@myhost.test.ex>)
id 10HmaX-0005vi-00
- for CALLER@myhost.test.ex; Tue, 2 Mar 1999 09:44:33 +0000
+ for ph10@myhost.test.ex; Tue, 2 Mar 1999 09:44:33 +0000
calling local_scan(); timeout=300
local_scan() returned 0 NULL
-Writing spool header file
+Writing spool header file: TESTSUITE/spool//input//hdr.pppp
+DSN: Write SPOOL :-dsn_envid NULL
+DSN: Write SPOOL :-dsn_ret 0
+DSN: Flags :0
+DSN: **** SPOOL_OUT - address: |ph10@myhost.test.ex| errorsto: |NULL| orcpt: |NULL| dsn_flags: 0
+Renaming spool header file: TESTSUITE/spool//input//10HmaX-0005vi-00-H
Size of headers = sss
LOG: MAIN
<= CALLER@myhost.test.ex U=CALLER P=local S=sss
@@ -272,11 +334,11 @@ changed uid/gid: forcing real = effective
configuration file is TESTSUITE/test-config
trusted user
admin user
-skipping ACL configuration - not needed
seeking password data for user "CALLER": cache not available
getpwnam() succeeded uid=CALLER_UID gid=CALLER_GID
set_process_info: pppp delivering specified messages
set_process_info: pppp delivering 10HmaX-0005vi-00
+Trying spool file TESTSUITE/spool//input//10HmaX-0005vi-00-D
reading spool file 10HmaX-0005vi-00-H
user=CALLER uid=CALLER_UID gid=CALLER_GID sender=CALLER@myhost.test.ex
sender_local=1 ident=CALLER
@@ -284,117 +346,130 @@ Non-recipients:
Empty Tree
---- End of tree ----
recipients_count=1
+**** SPOOL_IN - No additional fields
body_linecount=1 message_linecount=7
+DSN: set orcpt: NULL flags: 0
Delivery address list:
- CALLER@myhost.test.ex
+ ph10@myhost.test.ex
locking TESTSUITE/spool/db/retry.lockfile
-locked TESTSUITE/spool/db/retry.lockfile
-EXIM_DBOPEN(TESTSUITE/spool/db/retry)
-returned from EXIM_DBOPEN
+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)
ensuring TESTSUITE/spool/db/retry.lockfile is owned by exim
+failed to open DB file TESTSUITE/spool/db/retry.lockfile: No such file or directory
no retry data available
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
-Considering: CALLER@myhost.test.ex
-unique = CALLER@myhost.test.ex
+Considering: ph10@myhost.test.ex
+unique = ph10@myhost.test.ex
no domain retry record
no address retry record
-CALLER@myhost.test.ex: queued for routing
+ph10@myhost.test.ex: queued for routing
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
-routing CALLER@myhost.test.ex
+routing ph10@myhost.test.ex
--------> r1 router <--------
-local_part=CALLER domain=myhost.test.ex
+local_part=ph10 domain=myhost.test.ex
processing address_data
search_open: mysql "NULL"
search_find: file="NULL"
- key="select name from them where id='CALLER'" partial=-1 affix=NULL starflags=0
+ key="select name from them where id='ph10'" partial=-1 affix=NULL starflags=0
LRU list:
internal_search_find: file="NULL"
- type=mysql key="select name from them where id='CALLER'"
-database lookup required for select name from them where id='CALLER'
-MySQL query: select name from them where id='CALLER'
-MYSQL new connection: host=localhost port=0 socket=NULL database=test user=root
+ type=mysql key="select name from them where id='ph10'"
+database lookup required for select name from them where id='ph10'
+MySQL query: select name from them where id='ph10'
+MYSQL new connection: host=127.0.0.1 port=1223 socket=NULL database=test user=root
lookup yielded: Philip Hazel
calling r1 router
-r1 router called for CALLER@myhost.test.ex
+r1 router called for ph10@myhost.test.ex
domain = myhost.test.ex
set transport t1
-queued for t1 transport: local_part = CALLER
+queued for t1 transport: local_part = ph10
domain = myhost.test.ex
errors_to=NULL
domain_data=NULL localpart_data=NULL
routed by r1 router
- envelope to: CALLER@myhost.test.ex
+ envelope to: ph10@myhost.test.ex
transport: t1
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
After routing:
Local deliveries:
- CALLER@myhost.test.ex
+ ph10@myhost.test.ex
Remote deliveries:
Failed addresses:
Deferred addresses:
search_tidyup called
-close MYSQL connection: localhost/test/root
+close MYSQL connection: 127.0.0.1:1223/test/root
>>>>>>>>>>>>>>>> Local deliveries >>>>>>>>>>>>>>>>
---------> CALLER@myhost.test.ex <--------
+--------> ph10@myhost.test.ex <--------
locking TESTSUITE/spool/db/retry.lockfile
-locked TESTSUITE/spool/db/retry.lockfile
-EXIM_DBOPEN(TESTSUITE/spool/db/retry)
-returned from EXIM_DBOPEN
+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
no retry data available
search_tidyup called
-changed uid/gid: local delivery to CALLER <CALLER@myhost.test.ex> transport=t1
+changed uid/gid: local delivery to ph10 <ph10@myhost.test.ex> transport=t1
uid=CALLER_UID gid=CALLER_GID pid=pppp
home=NULL current=/
-set_process_info: pppp delivering 10HmaX-0005vi-00 to CALLER using t1
+set_process_info: pppp delivering 10HmaX-0005vi-00 to ph10 using t1
appendfile transport entered
search_open: mysql "NULL"
search_find: file="NULL"
- key="select id from them where id='CALLER'" partial=-1 affix=NULL starflags=0
+ key="select id from them where id='ph10'" partial=-1 affix=NULL starflags=0
LRU list:
internal_search_find: file="NULL"
- type=mysql key="select id from them where id='CALLER'"
-database lookup required for select id from them where id='CALLER'
-MySQL query: select id from them where id='CALLER'
-MYSQL new connection: host=localhost port=0 socket=NULL database=test user=root
-lookup yielded: CALLER
+ type=mysql key="select id from them where id='ph10'"
+database lookup required for select id from them where id='ph10'
+MySQL query: select id from them where id='ph10'
+MYSQL new connection: host=127.0.0.1 port=1223 socket=NULL database=test user=root
+lookup yielded: ph10
appendfile: mode=600 notify_comsat=0 quota=0 warning=0
- file=TESTSUITE/test-mail/CALLER format=unix
+ file=TESTSUITE/test-mail/ph10 format=unix
message_prefix=From ${if def:return_path{$return_path}{MAILER-DAEMON}} ${tod_bsdinbox}\n
message_suffix=\n
maildir_use_size_file=no
locking by lockfile fcntl
-lock name: TESTSUITE/test-mail/CALLER.lock
-hitch name: TESTSUITE/test-mail/CALLER.lock.test.ex.dddddddd.pppppppp
+lock name: TESTSUITE/test-mail/ph10.lock
+hitch name: TESTSUITE/test-mail/ph10.lock.test.ex.dddddddd.pppppppp
lock file created
-mailbox TESTSUITE/test-mail/CALLER is locked
-writing to file TESTSUITE/test-mail/CALLER
+mailbox TESTSUITE/test-mail/ph10 is locked
+writing to file TESTSUITE/test-mail/ph10
writing data block fd=dddd size=sss timeout=0
+cannot use sendfile for body: spoolfile not wireformat
writing data block fd=dddd size=sss timeout=0
writing data block fd=dddd size=sss timeout=0
appendfile yields 0 with errno=dd more_errno=dd
search_tidyup called
-close MYSQL connection: localhost/test/root
-journalling CALLER@myhost.test.ex
-t1 transport returned OK for CALLER@myhost.test.ex
-post-process CALLER@myhost.test.ex (0)
-CALLER@myhost.test.ex delivered
+close MYSQL connection: 127.0.0.1:1223/test/root
+journalling ph10@myhost.test.ex
+t1 transport returned OK for ph10@myhost.test.ex
+post-process ph10@myhost.test.ex (0)
+ph10@myhost.test.ex delivered
LOG: MAIN
- => CALLER <CALLER@myhost.test.ex> R=r1 T=t1
+ => ph10 <ph10@myhost.test.ex> R=r1 T=t1
>>>>>>>>>>>>>>>> deliveries are done >>>>>>>>>>>>>>>>
changed uid/gid: post-delivery tidying
uid=EXIM_UID gid=EXIM_GID pid=pppp
set_process_info: pppp tidying up after delivering 10HmaX-0005vi-00
Processing retry items
Succeeded addresses:
-CALLER@myhost.test.ex: no retry items
+ ph10@myhost.test.ex: no retry items
Failed addresses:
Deferred addresses:
end of retry processing
+DSN: processing router : r1
+DSN: processing successful delivery address: ph10@myhost.test.ex
+DSN: Sender_address: CALLER@myhost.test.ex
+DSN: orcpt: NULL flags: 0
+DSN: envid: NULL ret: 0
+DSN: Final recipient: ph10@myhost.test.ex
+DSN: Remote SMTP server supports DSN: 0
+DSN: not sending DSN success message
LOG: MAIN
Completed
end delivery of 10HmaX-0005vi-00
search_tidyup called
search_tidyup called
->>>>>>>>>>>>>>>> Exim pid=pppp terminating with rc=0 >>>>>>>>>>>>>>>>
+>>>>>>>>>>>>>>>> Exim pid=pppp (main) terminating with rc=0 >>>>>>>>>>>>>>>>
search_tidyup called
->>>>>>>>>>>>>>>> Exim pid=pppp terminating with rc=0 >>>>>>>>>>>>>>>>
+>>>>>>>>>>>>>>>> Exim pid=pppp (main) terminating with rc=0 >>>>>>>>>>>>>>>>
diff --git a/test/stderr/2620 b/test/stderr/2620
index 8faf3345a..625552a18 100644
--- a/test/stderr/2620
+++ b/test/stderr/2620
@@ -183,6 +183,19 @@ PostgreSQL query: SELECT * FROM them WHERE id IN ('ph10', 'aaaa');
PGSQL using cached connection for localhost:1223/test/CALLER
lookup yielded: name="Philip Hazel" id=ph10
name=Aristotle id=aaaa
+search_open: pgsql "NULL"
+ cached open
+search_find: file="NULL"
+ key="delete from them where id='aaaa'" partial=-1 affix=NULL starflags=0
+LRU list:
+internal_search_find: file="NULL"
+ type=pgsql key="delete from them where id='aaaa'"
+database lookup required for delete from them where id='aaaa'
+PostgreSQL query: delete from them where id='aaaa'
+PGSQL using cached connection for localhost:1223/test/CALLER
+PGSQL: command does not return any data but was successful. Rows affected: 1
+lookup forced cache cleanup
+lookup yielded: 1
search_tidyup called
close PGSQL connection: (TESTSUITE/pgsql/.s.PGSQL.1223)/test/CALLER
close PGSQL connection: localhost:1223/test/CALLER
diff --git a/test/stdout/2610 b/test/stdout/2610
new file mode 100644
index 000000000..f0774a81a
--- /dev/null
+++ b/test/stdout/2610
@@ -0,0 +1,31 @@
+> Philip Hazel
+> Philip Hazel
+>
+>
+> id=nothing name=""
+> 0
+>
+>
+> name="\"stquot" id=quote2
+>
+> Failed: lookup of "servers=x:127.0.0.1::1223; select name from them where id='ph10';" gave DEFER: MySQL server "x" not found in mysql_servers
+> Philip Hazel
+> Philip Hazel
+> Philip Hazel
+> Philip Hazel
+> x
+> Philip Hazel
+Aristotle
+> name="Philip Hazel" id=ph10
+name=Aristotle id=aaaa
+> 1
+>
+
+**** SMTP testing session as if from host 10.0.0.0
+**** but without any ident (RFC 1413) callback.
+**** This is not for real!
+
+220 myhost.test.ex ESMTP Exim x.yz Tue, 2 Mar 1999 09:44:33 +0000
+250 OK
+550 relay not permitted
+221 myhost.test.ex closing connection
diff --git a/test/stdout/2620 b/test/stdout/2620
index 08e417d0f..4f907c1bc 100644
--- a/test/stdout/2620
+++ b/test/stdout/2620
@@ -19,6 +19,7 @@ after" id=newline
Aristotle
> name="Philip Hazel" id=ph10
name=Aristotle id=aaaa
+> 1
>
**** SMTP testing session as if from host 10.0.0.0
diff --git a/test/stdout/9100 b/test/stdout/9100
deleted file mode 100644
index 460d76714..000000000
--- a/test/stdout/9100
+++ /dev/null
@@ -1,26 +0,0 @@
-> Philip Hazel
-> Philip Hazel
->
->
-> id=nothing name=""
-> 0
-> id=quote name="\"Q\" Oted" home=/home/quoted mail=quoted@xxx
-> id=filter name=filter home=filter mail="#Exim filter
-deliver postmaster"
-> id=quote2 name="\"qnosp" home=/home/q2 mail=""
-> id=nlonly name=filter home=filter mail="Before
-After"
-> Failed: lookup of "servers=x:localhost; select name from them where id='CALLER';" gave DEFER: MySQL server "x" not found in mysql_servers
-> Philip Hazel
-> Philip Hazel
-> Philip Hazel
->
-
-**** SMTP testing session as if from host 10.0.0.0
-**** but without any ident (RFC 1413) callback.
-**** This is not for real!
-
-220 myhost.test.ex ESMTP Exim x.yz Tue, 2 Mar 1999 09:44:33 +0000
-250 OK
-550 relay not permitted
-221 myhost.test.ex closing connection