changeset 18303:73e013bc64a4

lda/lmtp: Added a hardcoded LDA_SUBMISSION_TIMEOUT_SECS=30 timeout for SMTP client. Maybe we could have a new setting if needed later on, but we've been working pretty successfully without any timeout for a long time..
author Timo Sirainen <tss@iki.fi>
date Fri, 06 Mar 2015 16:33:23 +0200
parents bf2dbc8ec74b
children 9c69c197b527
files src/lda/main.c src/lib-lda/mail-deliver.h src/lib-lda/mail-send.c src/lmtp/commands.c
diffstat 4 files changed, 8 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/src/lda/main.c	Fri Mar 06 16:32:05 2015 +0200
+++ b/src/lda/main.c	Fri Mar 06 16:33:23 2015 +0200
@@ -315,6 +315,7 @@
 	ctx.session = mail_deliver_session_init();
 	ctx.pool = ctx.session->pool;
 	ctx.dest_mailbox_name = "INBOX";
+	ctx.timeout_secs = LDA_SUBMISSION_TIMEOUT_SECS;
 	path = NULL;
 
 	user = getenv("USER");
--- a/src/lib-lda/mail-deliver.h	Fri Mar 06 16:32:05 2015 +0200
+++ b/src/lib-lda/mail-deliver.h	Fri Mar 06 16:33:23 2015 +0200
@@ -5,6 +5,10 @@
 #include "mail-types.h"
 #include "mail-error.h"
 
+/* How many seconds to wait for replies from SMTP before failing. Used for
+   sending rejects, forward, etc. */
+#define LDA_SUBMISSION_TIMEOUT_SECS 30
+
 struct mail_storage;
 struct mail_save_context;
 struct mailbox;
@@ -20,6 +24,7 @@
 	pool_t pool;
 	const struct lda_settings *set;
 	struct mail_deliver_session *session;
+	unsigned int timeout_secs;
 
 	struct duplicate_context *dup_ctx;
 
--- a/src/lib-lda/mail-send.c	Fri Mar 06 16:32:05 2015 +0200
+++ b/src/lib-lda/mail-send.c	Fri Mar 06 16:33:23 2015 +0200
@@ -180,7 +180,7 @@
     str_truncate(str, 0);
     str_printfa(str, "\r\n\r\n--%s--\r\n", boundary);
     o_stream_nsend(output, str_data(str), str_len(str));
-    if ((ret = smtp_client_deinit(smtp_client, &error)) < 0) {
+    if ((ret = smtp_client_deinit_timeout(smtp_client, ctx->timeout_secs, &error)) < 0) {
 	    i_error("msgid=%s: Temporarily failed to send rejection: %s",
 		    orig_msgid == NULL ? "" : str_sanitize(orig_msgid, 80),
 		    str_sanitize(error, 512));
--- a/src/lmtp/commands.c	Fri Mar 06 16:32:05 2015 +0200
+++ b/src/lmtp/commands.c	Fri Mar 06 16:33:23 2015 +0200
@@ -803,6 +803,7 @@
 	dctx.session = session;
 	dctx.pool = session->pool;
 	dctx.set = lda_set;
+	dctx.timeout_secs = LDA_SUBMISSION_TIMEOUT_SECS;
 	dctx.session_id = client->state.session_id;
 	dctx.src_mail = src_mail;
 	dctx.src_envelope_sender = client->state.mail_from;