]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
lib-smtp: smtp-server-command - Add hook for the submission of individual replies.
authorStephan Bosch <stephan.bosch@dovecot.fi>
Sat, 16 Mar 2019 14:03:39 +0000 (15:03 +0100)
committerMartti Rannanjärvi <martti.rannanjarvi@open-xchange.com>
Wed, 25 Sep 2019 08:25:20 +0000 (11:25 +0300)
src/lib-smtp/smtp-server-command.c
src/lib-smtp/smtp-server.h

index 7ad40fbc388967a130722224dd9de810104c21e0..9aa62cf5c9c88f9e743f215b31aa8c8146a3b656 100644 (file)
@@ -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)
index 3634272ca621d4b0233311c7dcb130e71074e14a..6a50607a1bbedbbe0fe4d1b8e2fd570ee5c790f2 100644 (file)
@@ -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. */