]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
lib-smtp: smtp-server-command - Reliably end input capture in smtp_server_command_inp...
authorStephan Bosch <stephan.bosch@open-xchange.com>
Wed, 24 Jun 2020 08:42:17 +0000 (10:42 +0200)
committertimo.sirainen <timo.sirainen@open-xchange.com>
Wed, 7 Oct 2020 11:45:27 +0000 (11:45 +0000)
src/lib-smtp/smtp-server-command.c

index 8281d18b6df0cbbc0e4b7d690322d69079f2d827..68643f8c33c7962edab547cef300738656d7d408 100644 (file)
@@ -709,9 +709,7 @@ void smtp_server_command_finished(struct smtp_server_command *cmd)
                smtp_server_command_unref(&cmd);
                return;
        } else if (cmd->input_locked) {
-               if (cmd->input_captured)
-                       smtp_server_connection_input_halt(conn);
-               smtp_server_connection_input_resume(conn);
+               smtp_server_command_input_unlock(&cmd->context);
        }
 
        smtp_server_command_unref(&cmd);
@@ -767,6 +765,10 @@ void smtp_server_command_input_unlock(struct smtp_server_cmd_ctx *cmd)
        struct smtp_server_connection *conn = cmd->conn;
 
        command->input_locked = FALSE;
+       if (command->input_captured) {
+               command->input_captured = FALSE;
+               smtp_server_connection_input_halt(conn);
+       }
        smtp_server_connection_input_resume(conn);
 }