From ea7224901573939b2aa159db5517c4ab60e22539 Mon Sep 17 00:00:00 2001 From: Jeremy Harris Date: Tue, 11 Sep 2012 23:11:16 +0100 Subject: [PATCH] Avoid using a waiting db for single-message-only transports. Performance bug 1262 and patch from Paul Fisher. Testcase 0288 exercises. --- doc/doc-txt/ChangeLog | 3 +++ src/src/transports/smtp.c | 7 +++++-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/doc/doc-txt/ChangeLog b/doc/doc-txt/ChangeLog index c528ada99..f9eaaf7a9 100644 --- a/doc/doc-txt/ChangeLog +++ b/doc/doc-txt/ChangeLog @@ -68,6 +68,9 @@ JH/05 Permit multiple router/transport headers_add/remove lines. JH/06 Add dnsdb pseudo-lookup "a+" to do an "aaaa" + "a" combination. +JH/07 Avoid using a waiting database for a single-message-only transport. + Performance patch from Paul Fisher. + Exim version 4.80 ----------------- diff --git a/src/src/transports/smtp.c b/src/src/transports/smtp.c index f7af921af..36a053f2c 100644 --- a/src/src/transports/smtp.c +++ b/src/src/transports/smtp.c @@ -3114,9 +3114,12 @@ for (addr = addrlist; addr != NULL; addr = addr->next) /* Update the database which keeps information about which messages are waiting for which hosts to become available. For some message-specific errors, the update_waiting flag is turned off because we don't want follow-on deliveries in -those cases. */ +those cases. If this transport instance is explicitly limited to one message +per connection, follow-on deliveries are not possible, and there's no need +to create/update a waiting database. */ -if (update_waiting) transport_update_waiting(hostlist, tblock->name); +if (update_waiting && tblock->connection_max_messages != 1) + transport_update_waiting(hostlist, tblock->name); END_TRANSPORT: -- 2.30.2