[exim-cvs] Hintsdb: fix sqlite

Página Inicial
Delete this message
Reply to this message
Autor: Exim Git Commits Mailing List
Data:  
Para: exim-cvs
Assunto: [exim-cvs] Hintsdb: fix sqlite
Gitweb: https://git.exim.org/exim.git/commitdiff/48f733ce6670fb161d3ae194340f94d4d77eb69b
Commit:     48f733ce6670fb161d3ae194340f94d4d77eb69b
Parent:     6fb5f324c39200c00aa9aa991a6924c2d9732817
Author:     Jeremy Harris <jgh146exb@???>
AuthorDate: Sat Jul 20 19:16:36 2024 +0100
Committer:  Jeremy Harris <jgh146exb@???>
CommitDate: Sat Jul 20 19:16:36 2024 +0100


    Hintsdb: fix sqlite


    Broken-by: 3cee6033bae8
---
 src/src/dbfn.c               |  3 +++
 src/src/deliver.c            |  6 +++++-
 test/log/0367                |  8 ++++----
 test/runtest                 |  4 ++--
 test/scripts/0000-Basic/0367 |  8 ++++----
 test/stderr/0218             | 12 ++++++------
 test/stderr/1157             | 18 +++++++++---------
 test/stdout/0367             | 16 ++++++++--------
 8 files changed, 41 insertions(+), 34 deletions(-)


diff --git a/src/src/dbfn.c b/src/src/dbfn.c
index 1f6989164..27bd9e56c 100644
--- a/src/src/dbfn.c
+++ b/src/src/dbfn.c
@@ -256,6 +256,7 @@ uschar dirname[PATHLEN], filename[PATHLEN];
DEBUG(D_hints_lookup) acl_level++;

dbblock->lockfd = -1;
+dbblock->readonly = (flags & O_ACCMODE) == O_RDONLY;
db_dir_make(TRUE);

dlen = snprintf(CS dirname, sizeof(dirname), "%s/db", spool_directory);
@@ -295,11 +296,13 @@ return dbblock;
}


+/* Return: boolean success */
BOOL
dbfn_transaction_start(open_db * dbp)
{
DEBUG(D_hints_lookup) debug_printf_indent("dbfn_transaction_start\n");
if (!dbp->readonly) return exim_dbtransaction_start(dbp->dbptr);
+return FALSE;
}
void
dbfn_transaction_commit(open_db * dbp)
diff --git a/src/src/deliver.c b/src/src/deliver.c
index ee7650243..8aeedc755 100644
--- a/src/src/deliver.c
+++ b/src/src/deliver.c
@@ -4794,6 +4794,10 @@ do_remote_deliveries par_reduce par_wait par_read_pipe
*/

   /*XXX what about firsttime? */
+  /*XXX also, ph1? Note tp->name would possibly change per message,
+  so a check/close/open would be needed. Might was to change that var name
+  "continue_wait_db" as we'd be using it for a non-continued-transport
+  context. */
   if (continue_transport && !exim_lockfile_needed())
     if (!continue_wait_db)
       {
@@ -4804,7 +4808,7 @@ do_remote_deliveries par_reduce par_wait par_read_pipe
       continue_next_id[0] = '\0';
       }


-  if ((pid = exim_fork(US"transport")) == 0)
+  if ((pid = exim_fork(f.queue_2stage ? US"transport ph1":US"transport")) == 0)
     {
     int fd = pfd[pipe_write];
     host_item *h;
diff --git a/test/log/0367 b/test/log/0367
index bfc366ac0..0e5352d0b 100644
--- a/test/log/0367
+++ b/test/log/0367
@@ -3,12 +3,12 @@
 1999-03-02 09:44:33 10HmaZ-000000005vi-0000 <= CALLER@??? U=CALLER P=local S=sss
 1999-03-02 09:44:33 10HmbA-000000005vi-0000 <= CALLER@??? U=CALLER P=local S=sss
 1999-03-02 09:44:33 Start queue run: pid=p1234 -qqf
-1999-03-02 09:44:33 10HmaX-000000005vi-0000 => userx@domain1 R=others T=smtp H=127.0.0.1 [127.0.0.1] C="250 OK"
+1999-03-02 09:44:33 10HmaX-000000005vi-0000 => userx1@domain1 R=others T=smtp H=127.0.0.1 [127.0.0.1] C="250 OK"
 1999-03-02 09:44:33 10HmaX-000000005vi-0000 Completed
-1999-03-02 09:44:33 10HmaY-000000005vi-0000 => userx@domain1 R=others T=smtp H=127.0.0.1 [127.0.0.1]* C="250 OK"
+1999-03-02 09:44:33 10HmaY-000000005vi-0000 => userx2@domain1 R=others T=smtp H=127.0.0.1 [127.0.0.1]* C="250 OK"
 1999-03-02 09:44:33 10HmaY-000000005vi-0000 Completed
-1999-03-02 09:44:33 10HmaZ-000000005vi-0000 => userx@domain1 R=others T=smtp H=127.0.0.1 [127.0.0.1]* C="250 OK"
+1999-03-02 09:44:33 10HmaZ-000000005vi-0000 => userx3@domain1 R=others T=smtp H=127.0.0.1 [127.0.0.1]* C="250 OK"
 1999-03-02 09:44:33 10HmaZ-000000005vi-0000 Completed
-1999-03-02 09:44:33 10HmbA-000000005vi-0000 => userx@domain1 R=others T=smtp H=127.0.0.1 [127.0.0.1]* C="250 OK"
+1999-03-02 09:44:33 10HmbA-000000005vi-0000 => userx4@domain1 R=others T=smtp H=127.0.0.1 [127.0.0.1]* C="250 OK"
 1999-03-02 09:44:33 10HmbA-000000005vi-0000 Completed
 1999-03-02 09:44:33 End queue run: pid=p1234 -qqf
diff --git a/test/runtest b/test/runtest
index 6a00a4642..3b936de3d 100755
--- a/test/runtest
+++ b/test/runtest
@@ -1199,8 +1199,8 @@ RESET_AFTER_EXTRA_LINE_READ:
     s/(?:bdb|tdb|gdbm|ndbm|sqlite)
       _open\(flags\ 0x(\d)
       \ mode\ 0640\)
-      (?=\ No\ such\ file\ or\ directory$)
-     /hintsdb_open(flags 0x$1 mode 0640)/x;
+      \ (?: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;
diff --git a/test/scripts/0000-Basic/0367 b/test/scripts/0000-Basic/0367
index 0c03b391b..a8a06b83c 100644
--- a/test/scripts/0000-Basic/0367
+++ b/test/scripts/0000-Basic/0367
@@ -1,16 +1,16 @@
 # Multiple messages down one SMTP connection
 need_ipv4
 #
-exim -odq userx@domain1
+exim -odq userx1@domain1
 Test message 1
 ****
-exim -odq userx@domain1
+exim -odq userx2@domain1
 Test message 2
 ****
-exim -odq userx@domain1
+exim -odq userx3@domain1
 Test message 3
 ****
-exim -odq userx@domain1
+exim -odq userx4@domain1
 Test message 4
 ****
 server PORT_S
diff --git a/test/stderr/0218 b/test/stderr/0218
index 49afcdcc9..91d2c7104 100644
--- a/test/stderr/0218
+++ b/test/stderr/0218
@@ -13,14 +13,14 @@ test.ex in ""? no (end of list)
 CALLER@??? in senders? no (end of list)
 R: client  (ACL)
 T: send_to_server  (ACL)
->>>>>>>>>>>>>>>> Exim pid=p1237 (transport) terminating with rc=0 >>>>>>>>>>>>>>>>
+>>>>>>>>>>>>>>>> Exim pid=p1237 (transport ph1) terminating with rc=0 >>>>>>>>>>>>>>>>

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

delivering 10HmaY-000000005vi-0000 (queue run pid p1234)
test.ex in ""? no (end of list)
CALLER@??? in senders? no (end of list)
R: client (ACL)
T: send_to_server (ACL)
->>>>>>>>>>>>>>>> Exim pid=p1239 (transport) terminating with rc=0 >>>>>>>>>>>>>>>>
+>>>>>>>>>>>>>>>> Exim pid=p1239 (transport ph1) terminating with rc=0 >>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> Exim pid=p1240 (qrun-p1-delivery) terminating with rc=0 >>>>>>>>>>>>>>>>

queue_run phase 2 start
queue running combined directories
@@ -95,14 +95,14 @@ test.ex in ""? no (end of list)
CALLER@??? in senders? no (end of list)
R: client (ACL)
T: send_to_server (ACL)
->>>>>>>>>>>>>>>> Exim pid=p1244 (transport) terminating with rc=0 >>>>>>>>>>>>>>>>
+>>>>>>>>>>>>>>>> Exim pid=p1244 (transport ph1) terminating with rc=0 >>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> Exim pid=p1245 (qrun-p1-delivery) terminating with rc=0 >>>>>>>>>>>>>>>>

delivering 10HmbA-000000005vi-0000 (queue run pid p1235)
test.ex in ""? no (end of list)
CALLER@??? in senders? no (end of list)
R: client (ACL)
T: send_to_server (ACL)
->>>>>>>>>>>>>>>> Exim pid=p1246 (transport) terminating with rc=0 >>>>>>>>>>>>>>>>
+>>>>>>>>>>>>>>>> Exim pid=p1246 (transport ph1) terminating with rc=0 >>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> Exim pid=p1247 (qrun-p1-delivery) terminating with rc=0 >>>>>>>>>>>>>>>>

queue_run phase 2 start
queue running combined directories
@@ -172,7 +172,7 @@ test.ex in ""? no (end of list)
CALLER@??? in senders? no (end of list)
R: client (ACL)
T: send_to_server (ACL)
->>>>>>>>>>>>>>>> Exim pid=p1253 (transport) terminating with rc=0 >>>>>>>>>>>>>>>>
+>>>>>>>>>>>>>>>> Exim pid=p1253 (transport ph1) terminating with rc=0 >>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> Exim pid=p1254 (qrun-p1-delivery) terminating with rc=0 >>>>>>>>>>>>>>>>

delivering 10HmbB-000000005vi-0000 (queue run pid p1236)
R: bounce (ACL)
@@ -188,7 +188,7 @@ test.ex in ""? no (end of list)
CALLER@??? in senders? no (end of list)
R: client (ACL)
T: send_to_server (ACL)
->>>>>>>>>>>>>>>> Exim pid=p1256 (transport) terminating with rc=0 >>>>>>>>>>>>>>>>
+>>>>>>>>>>>>>>>> Exim pid=p1256 (transport ph1) terminating with rc=0 >>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> Exim pid=p1257 (qrun-p1-delivery) terminating with rc=0 >>>>>>>>>>>>>>>>

delivering 10HmbA-000000005vi-0000 (queue run pid p1236)
test.ex in ""? no (end of list)
diff --git a/test/stderr/1157 b/test/stderr/1157
index 95adc3960..3d55a28c5 100644
--- a/test/stderr/1157
+++ b/test/stderr/1157
@@ -5,11 +5,11 @@ admin user
dropping to exim gid; retaining priv uid
LOG: queue_run MAIN
Start queue run: pid=p1234 -qqf
->>>>>>>>>>>>>>>> Exim pid=p1242 (transport) terminating with rc=0 >>>>>>>>>>>>>>>>
+>>>>>>>>>>>>>>>> Exim pid=p1242 (transport ph1) terminating with rc=0 >>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> Exim pid=p1243 (qrun-p1-delivery) terminating with rc=0 >>>>>>>>>>>>>>>>

->>>>>>>>>>>>>>>> Exim pid=p1244 (transport) terminating with rc=0 >>>>>>>>>>>>>>>>
+>>>>>>>>>>>>>>>> Exim pid=p1244 (transport ph1) terminating with rc=0 >>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> Exim pid=p1245 (qrun-p1-delivery) terminating with rc=0 >>>>>>>>>>>>>>>>

->>>>>>>>>>>>>>>> Exim pid=p1246 (transport) terminating with rc=0 >>>>>>>>>>>>>>>>
+>>>>>>>>>>>>>>>> Exim pid=p1246 (transport ph1) terminating with rc=0 >>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> Exim pid=p1247 (qrun-p1-delivery) terminating with rc=0 >>>>>>>>>>>>>>>>

Connecting to 127.0.0.1 [127.0.0.1]:PORT_D ...
connected
@@ -100,11 +100,11 @@ admin user
dropping to exim gid; retaining priv uid
LOG: queue_run MAIN
Start queue run: pid=p1235 -qqf
->>>>>>>>>>>>>>>> Exim pid=p1253 (transport) terminating with rc=0 >>>>>>>>>>>>>>>>
+>>>>>>>>>>>>>>>> Exim pid=p1253 (transport ph1) terminating with rc=0 >>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> Exim pid=p1254 (qrun-p1-delivery) terminating with rc=0 >>>>>>>>>>>>>>>>

->>>>>>>>>>>>>>>> Exim pid=p1255 (transport) terminating with rc=0 >>>>>>>>>>>>>>>>
+>>>>>>>>>>>>>>>> Exim pid=p1255 (transport ph1) terminating with rc=0 >>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> Exim pid=p1256 (qrun-p1-delivery) terminating with rc=0 >>>>>>>>>>>>>>>>

->>>>>>>>>>>>>>>> Exim pid=p1257 (transport) terminating with rc=0 >>>>>>>>>>>>>>>>
+>>>>>>>>>>>>>>>> Exim pid=p1257 (transport ph1) terminating with rc=0 >>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> Exim pid=p1258 (qrun-p1-delivery) terminating with rc=0 >>>>>>>>>>>>>>>>

Connecting to 127.0.0.1 [127.0.0.1]:PORT_D ...
connected
@@ -195,11 +195,11 @@ admin user
dropping to exim gid; retaining priv uid
LOG: queue_run MAIN
Start queue run: pid=p1236 -qqf
->>>>>>>>>>>>>>>> Exim pid=p1264 (transport) terminating with rc=0 >>>>>>>>>>>>>>>>
+>>>>>>>>>>>>>>>> Exim pid=p1264 (transport ph1) terminating with rc=0 >>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> Exim pid=p1265 (qrun-p1-delivery) terminating with rc=0 >>>>>>>>>>>>>>>>

->>>>>>>>>>>>>>>> Exim pid=p1266 (transport) terminating with rc=0 >>>>>>>>>>>>>>>>
+>>>>>>>>>>>>>>>> Exim pid=p1266 (transport ph1) terminating with rc=0 >>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> Exim pid=p1267 (qrun-p1-delivery) terminating with rc=0 >>>>>>>>>>>>>>>>

->>>>>>>>>>>>>>>> Exim pid=p1268 (transport) terminating with rc=0 >>>>>>>>>>>>>>>>
+>>>>>>>>>>>>>>>> Exim pid=p1268 (transport ph1) terminating with rc=0 >>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> Exim pid=p1269 (qrun-p1-delivery) terminating with rc=0 >>>>>>>>>>>>>>>>

 Connecting to 127.0.0.1 [127.0.0.1]:PORT_D ...
 connected
diff --git a/test/stdout/0367 b/test/stdout/0367
index 1f42f534a..86165b445 100644
--- a/test/stdout/0367
+++ b/test/stdout/0367
@@ -8,14 +8,14 @@ EHLO the.local.host.name
 250 HELP
 MAIL FROM:<CALLER@???>
 250 OK
-RCPT TO:<userx@domain1>
+RCPT TO:<userx1@domain1>
 250 OK
 DATA
 354 More...
 Received: from CALLER by the.local.host.name with local (Exim x.yz)
     (envelope-from <CALLER@???>)
     id 10HmaX-000000005vi-0000
-    for userx@domain1;
+    for userx1@domain1;
     Tue, 2 Mar 1999 09:44:33 +0000
 Message-Id: <E10HmaX-000000005vi-0000@???>
 From: CALLER_NAME <CALLER@???>
@@ -26,14 +26,14 @@ Test message 1
 250 OK
 MAIL FROM:<CALLER@???>
 250 OK
-RCPT TO:<userx@domain1>
+RCPT TO:<userx2@domain1>
 250 OK
 DATA
 354 More...
 Received: from CALLER by the.local.host.name with local (Exim x.yz)
     (envelope-from <CALLER@???>)
     id 10HmaY-000000005vi-0000
-    for userx@domain1;
+    for userx2@domain1;
     Tue, 2 Mar 1999 09:44:33 +0000
 Message-Id: <E10HmaY-000000005vi-0000@???>
 From: CALLER_NAME <CALLER@???>
@@ -44,14 +44,14 @@ Test message 2
 250 OK
 MAIL FROM:<CALLER@???>
 250 OK
-RCPT TO:<userx@domain1>
+RCPT TO:<userx3@domain1>
 250 OK
 DATA
 354 More...
 Received: from CALLER by the.local.host.name with local (Exim x.yz)
     (envelope-from <CALLER@???>)
     id 10HmaZ-000000005vi-0000
-    for userx@domain1;
+    for userx3@domain1;
     Tue, 2 Mar 1999 09:44:33 +0000
 Message-Id: <E10HmaZ-000000005vi-0000@???>
 From: CALLER_NAME <CALLER@???>
@@ -62,14 +62,14 @@ Test message 3
 250 OK
 MAIL FROM:<CALLER@???>
 250 OK
-RCPT TO:<userx@domain1>
+RCPT TO:<userx4@domain1>
 250 OK
 DATA
 354 More...
 Received: from CALLER by the.local.host.name with local (Exim x.yz)
     (envelope-from <CALLER@???>)
     id 10HmbA-000000005vi-0000
-    for userx@domain1;
+    for userx4@domain1;
     Tue, 2 Mar 1999 09:44:33 +0000
 Message-Id: <E10HmbA-000000005vi-0000@???>
 From: CALLER_NAME <CALLER@???>


--
## 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/