]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
lib-smtp: smtp-server-recipient - Emit named events.
authorStephan Bosch <stephan.bosch@dovecot.fi>
Tue, 12 Feb 2019 00:47:43 +0000 (01:47 +0100)
committerStephan Bosch <stephan.bosch@dovecot.fi>
Sat, 2 Mar 2019 10:57:18 +0000 (11:57 +0100)
src/lib-smtp/smtp-server-cmd-rcpt.c
src/lib-smtp/smtp-server-private.h
src/lib-smtp/smtp-server-recipient.c
src/lib-smtp/smtp-server-transaction.c

index 7b6fe66670bb3194c0e77e51568f0a8b144f7682..a3c5c27bc7298e416591d69887254668b14f618c 100644 (file)
@@ -64,7 +64,8 @@ cmd_rcpt_completed(struct smtp_server_cmd_ctx *cmd,
                if (smtp_server_command_reply_is_forwarded(command))
                        (void)cmd_rcpt_check_state(cmd);
 
-               smtp_server_recipient_denied(rcpt);
+               smtp_server_recipient_denied(
+                       rcpt, smtp_server_command_get_reply(cmd->cmd, 0));
                return;
        }
 
index af0f327c93602307f3cfc4b870c76f4ae44b3608..67c5773229f373fd8d97a5c8249597ea362a649f 100644 (file)
@@ -374,13 +374,15 @@ bool smtp_server_recipient_unref(struct smtp_server_recipient **_rcpt);
 void smtp_server_recipient_destroy(struct smtp_server_recipient **_rcpt);
 
 bool smtp_server_recipient_approved(struct smtp_server_recipient **_rcpt);
-void smtp_server_recipient_denied(struct smtp_server_recipient *rcpt);
+void smtp_server_recipient_denied(struct smtp_server_recipient *rcpt,
+                                 const struct smtp_server_reply *reply);
 
 void smtp_server_recipient_last_data(struct smtp_server_recipient *rcpt,
                                     struct smtp_server_cmd_ctx *cmd);
 
 void smtp_server_recipient_reset(struct smtp_server_recipient *rcpt);
-void smtp_server_recipient_finished(struct smtp_server_recipient *rcpt);
+void smtp_server_recipient_finished(struct smtp_server_recipient *rcpt,
+                                   const struct smtp_server_reply *reply);
 
 /*
  * Transaction
index 8886e652955f8bc9e48b37566b9dd1110e8a0ceb..d6adb6dcff503fd25f91d4f3e9b18d2f4ce1b513 100644 (file)
@@ -80,6 +80,17 @@ bool smtp_server_recipient_unref(struct smtp_server_recipient **_rcpt)
                &rcpt, SMTP_SERVER_RECIPIENT_HOOK_DESTROY))
                i_unreached();
 
+       if (!rcpt->finished) {
+               struct event_passthrough *e =
+                       e = event_create_passthrough(rcpt->event)->
+                       set_name("smtp_server_transaction_rcpt_finished");
+               e->add_int("status_code", 9000);
+               e->add_str("enhanced_code", "9.0.0");
+               e->add_str("error", "Aborted");
+
+               e_debug(e->event(), "Aborted");
+       }
+
        event_unref(&rcpt->event);
        pool_unref(&rcpt->pool);
        return FALSE;
@@ -97,6 +108,8 @@ bool smtp_server_recipient_approved(struct smtp_server_recipient **_rcpt)
 
        i_assert(trans != NULL);
 
+       e_debug(rcpt->event, "Approved");
+
        rcpt->cmd = NULL;
        smtp_server_transaction_add_rcpt(trans, rcpt);
 
@@ -104,10 +117,18 @@ bool smtp_server_recipient_approved(struct smtp_server_recipient **_rcpt)
                _rcpt, SMTP_SERVER_RECIPIENT_HOOK_APPROVED);
 }
 
-void smtp_server_recipient_denied(struct smtp_server_recipient *rcpt)
+void smtp_server_recipient_denied(struct smtp_server_recipient *rcpt,
+                                 const struct smtp_server_reply *reply)
 {
        i_assert(!rcpt->finished);
        rcpt->finished = TRUE;
+
+       struct event_passthrough *e =
+               event_create_passthrough(rcpt->event)->
+               set_name("smtp_server_transaction_rcpt_finished");
+       smtp_server_reply_add_to_event(reply, e);
+
+       e_debug(e->event(), "Denied");
 }
 
 void smtp_server_recipient_last_data(struct smtp_server_recipient *rcpt,
@@ -121,12 +142,29 @@ void smtp_server_recipient_reset(struct smtp_server_recipient *rcpt)
 {
        i_assert(!rcpt->finished);
        rcpt->finished = TRUE;
+
+       struct event_passthrough *e =
+               event_create_passthrough(rcpt->event)->
+               set_name("smtp_server_transaction_rcpt_finished");
+       e->add_int("status_code", 9000);
+       e->add_str("enhanced_code", "9.0.0");
+       e->add_str("error", "Reset");
+
+       e_debug(e->event(), "Reset");
 }
 
-void smtp_server_recipient_finished(struct smtp_server_recipient *rcpt)
+void smtp_server_recipient_finished(struct smtp_server_recipient *rcpt,
+                                   const struct smtp_server_reply *reply)
 {
        i_assert(!rcpt->finished);
        rcpt->finished = TRUE;
+
+       struct event_passthrough *e =
+               event_create_passthrough(rcpt->event)->
+               set_name("smtp_server_transaction_rcpt_finished");
+       smtp_server_reply_add_to_event(reply, e);
+
+       e_debug(e->event(), "Finished");
 }
 
 #undef smtp_server_recipient_add_hook
index d15c3fcbd321e63b2fc144579fdd2015c9e1d81a..09b3cc181524cd8b8e23271dba619bb97ece5b4c 100644 (file)
@@ -239,7 +239,7 @@ void smtp_server_transaction_finished(struct smtp_server_transaction *trans,
                        reply = smtp_server_command_get_reply(cmd->cmd, i);
                else
                        reply = smtp_server_command_get_reply(cmd->cmd, 0);
-               smtp_server_recipient_finished(rcpts[i]);
+               smtp_server_recipient_finished(rcpts[i], reply);
 
                if (smtp_server_reply_is_success(reply))
                        rcpts_succeeded++;