From: Stephan Bosch Date: Tue, 11 Nov 2025 00:24:38 +0000 (+0100) Subject: lib-smtp: smtp-server-connection - Fix reading remaining payload of failed (DATA... X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=19aca08508639235755ce53d349f47520649ceee;p=thirdparty%2Fdovecot%2Fcore.git lib-smtp: smtp-server-connection - Fix reading remaining payload of failed (DATA) command --- diff --git a/src/lib-smtp/smtp-server-connection.c b/src/lib-smtp/smtp-server-connection.c index 340dfe90c8..d1dc62819f 100644 --- a/src/lib-smtp/smtp-server-connection.c +++ b/src/lib-smtp/smtp-server-connection.c @@ -529,7 +529,10 @@ smtp_server_connection_handle_input(struct smtp_server_connection *conn, if (conn->closing) break; - if (!smtp_server_connection_check_pipeline(conn)) { + if (!smtp_server_connection_check_pipeline(conn)) + pipeline_blocked = TRUE; + if (pipeline_blocked && + !smtp_command_parser_pending_data(conn->smtp_parser)) { smtp_server_connection_input_halt(conn); return; } @@ -603,7 +606,7 @@ smtp_server_connection_handle_input(struct smtp_server_connection *conn, if (conn->disconnected) return; - if (conn->input_broken || conn->closing || pipeline_blocked) { + if (conn->input_broken || conn->closing) { smtp_server_connection_input_halt(conn); return; } @@ -614,6 +617,12 @@ smtp_server_connection_handle_input(struct smtp_server_connection *conn, reply */ smtp_server_command_ready_to_reply(pending_command); } + + if (pipeline_blocked && + !smtp_command_parser_pending_data(conn->smtp_parser)) { + smtp_server_connection_input_halt(conn); + return; + } } }