]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
lib-smtp: smtp-submit - Add support for event API.
authorStephan Bosch <stephan.bosch@dovecot.fi>
Thu, 27 Dec 2018 23:41:43 +0000 (00:41 +0100)
committerVille Savolainen <ville.savolainen@dovecot.fi>
Fri, 28 Jun 2019 07:09:51 +0000 (10:09 +0300)
src/lib-smtp/smtp-submit.c
src/lib-smtp/smtp-submit.h

index a06be6b0f18ab25a8fbd67d705b28b2e9a5ceb5c..f0dd04f8610eb13c53b681733ecd9bf0229c3d66 100644 (file)
 
 #define DEFAULT_SUBMISSION_PORT 25
 
+static struct event_category event_category_smtp_submit = {
+       .name = "smtp-submit"
+};
+
 struct smtp_submit_session {
        pool_t pool;
        struct smtp_submit_settings set;
        struct ssl_iostream_settings ssl_set;
+       struct event *event;
 };
 
 struct smtp_submit {
        pool_t pool;
 
        struct smtp_submit_session *session;
+       struct event *event;
 
        struct ostream *output;
        struct istream *input;
@@ -79,6 +85,9 @@ smtp_submit_session_init(const struct smtp_submit_input *input,
                                                input->ssl);
        }
 
+       session->event = event_create(input->event);
+       event_add_category(session->event, &event_category_smtp_submit);
+
        return session;
 }
 
@@ -88,6 +97,7 @@ void smtp_submit_session_deinit(struct smtp_submit_session **_session)
 
        *_session = NULL;
 
+       event_unref(&session->event);
        pool_unref(&session->pool);
 }
 
@@ -105,6 +115,9 @@ smtp_submit_init(struct smtp_submit_session *session,
 
        subm->mail_from = smtp_address_clone(pool, mail_from);;
        p_array_init(&subm->rcpt_to, pool, 2);
+
+       subm->event = event_create(session->event);
+
        return subm;
 }
 
@@ -144,6 +157,7 @@ void smtp_submit_deinit(struct smtp_submit **_subm)
 
        if (subm->simple)
                 smtp_submit_session_deinit(&subm->session);
+       event_unref(&subm->event);
        pool_unref(&subm->pool);
 }
 
@@ -303,6 +317,7 @@ smtp_submit_send_host(struct smtp_submit *subm)
        smtp_set.command_timeout_msecs = set->submission_timeout*1000;
        smtp_set.debug = set->mail_debug;
        smtp_set.ssl = &subm->session->ssl_set;
+       smtp_set.event = subm->event;
 
        ssl_mode = SMTP_CLIENT_SSL_MODE_NONE;
        if (set->submission_ssl != NULL) {
@@ -386,6 +401,7 @@ smtp_submit_send_sendmail(struct smtp_submit *subm)
        pc_set.client_connect_timeout_msecs = set->submission_timeout * 1000;
        pc_set.input_idle_timeout_msecs = set->submission_timeout * 1000;
        pc_set.debug = set->mail_debug;
+       pc_set.event = subm->event;
        restrict_access_init(&pc_set.restrict_set);
 
        pc = program_client_local_create
index 7e8c7432cf1b8df5ac29a4660eeb6cd188ead1d6..8f7436b6f4769dcdbe33eee85176e01615733ac1 100644 (file)
@@ -12,6 +12,9 @@ struct smtp_submit;
 struct smtp_submit_input {
        /* SSL settings */
        const struct ssl_iostream_settings *ssl;
+
+       /* Event to use */
+       struct event *event;
 };
 
 struct smtp_submit_result {