From: Stephan Bosch Date: Sat, 16 Mar 2019 14:03:39 +0000 (+0100) Subject: lib-smtp: smtp-server-command - Add hook for the submission of individual replies. X-Git-Tag: 2.3.8~11 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=5079877f3de9d04c5f85a30bfe85935be58e19f6;p=thirdparty%2Fdovecot%2Fcore.git lib-smtp: smtp-server-command - Add hook for the submission of individual replies. --- diff --git a/src/lib-smtp/smtp-server-command.c b/src/lib-smtp/smtp-server-command.c index 7ad40fbc38..9aa62cf5c9 100644 --- a/src/lib-smtp/smtp-server-command.c +++ b/src/lib-smtp/smtp-server-command.c @@ -471,13 +471,19 @@ smtp_server_command_replied(struct smtp_server_command **_cmd) { struct smtp_server_command *cmd = *_cmd; - if (cmd->replies_submitted < cmd->replies_expected) - return TRUE; + if (cmd->replies_submitted < cmd->replies_expected) { + e_debug(cmd->context.event, "Replied (one)"); + + return smtp_server_command_call_hooks( + _cmd, SMTP_SERVER_COMMAND_HOOK_REPLIED_ONE, FALSE); + } e_debug(cmd->context.event, "Replied"); - return smtp_server_command_call_hooks( - _cmd, SMTP_SERVER_COMMAND_HOOK_REPLIED, TRUE); + return (smtp_server_command_call_hooks( + _cmd, SMTP_SERVER_COMMAND_HOOK_REPLIED_ONE, TRUE) && + smtp_server_command_call_hooks( + _cmd, SMTP_SERVER_COMMAND_HOOK_REPLIED, TRUE)); } bool smtp_server_command_completed(struct smtp_server_command **_cmd) diff --git a/src/lib-smtp/smtp-server.h b/src/lib-smtp/smtp-server.h index 3634272ca6..6a50607a1b 100644 --- a/src/lib-smtp/smtp-server.h +++ b/src/lib-smtp/smtp-server.h @@ -490,6 +490,8 @@ enum smtp_server_command_hook_type { /* next: command is next to reply but has not submittted all replies yet. */ SMTP_SERVER_COMMAND_HOOK_NEXT, + /* replied_one: command has submitted one reply. */ + SMTP_SERVER_COMMAND_HOOK_REPLIED_ONE, /* replied: command has submitted all replies. */ SMTP_SERVER_COMMAND_HOOK_REPLIED, /* completed: server is about to send last replies for this command. */