]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
submission: relay backend: Provide access to the client connection and transaction...
authorStephan Bosch <stephan.bosch@dovecot.fi>
Tue, 16 Oct 2018 21:58:23 +0000 (23:58 +0200)
committerStephan Bosch <stephan.bosch@dovecot.fi>
Mon, 29 Oct 2018 16:39:05 +0000 (17:39 +0100)
src/submission/submission-backend-relay.c
src/submission/submission-backend-relay.h
src/submission/submission-client.c
src/submission/submission-client.h

index 85591c76fe931fc03c3e98b96403bb1c7b57c77e..d5e8b2995b1ee6d34c6df269fb1233df9f9d3b14 100644 (file)
@@ -981,7 +981,7 @@ backend_relay_cmd_quit(struct submission_backend *_backend,
  * Relay backend
  */
 
-struct submission_backend *
+struct submission_backend_relay *
 submission_backend_relay_create(
        struct client *client,
        const struct submision_backend_relay_settings *set)
@@ -1041,9 +1041,29 @@ submission_backend_relay_create(
                        smtp_client, set->protocol, set->path, &smtp_set);
        }
 
+       return backend;
+}
+
+struct submission_backend *
+submission_backend_relay_get(struct submission_backend_relay *backend)
+{
        return &backend->backend;
 }
 
+struct smtp_client_connection *
+submission_backend_relay_get_connection(
+       struct submission_backend_relay *backend)
+{
+       return backend->conn;
+}
+
+struct smtp_client_transaction *
+submission_backend_relay_get_transaction(
+       struct submission_backend_relay *backend)
+{
+       return backend->trans;
+}
+
 static void backend_relay_destroy(struct submission_backend *_backend)
 {
        struct submission_backend_relay *backend =
index 7242702dc63e9a329dbc3f77f00bdfed40df4e90..cf55d0821e768f6368087705ec669c331b0f4ff2 100644 (file)
@@ -6,6 +6,7 @@
 #include "submission-backend.h"
 
 struct client;
+struct submission_backend_relay;
 
 struct submision_backend_relay_settings {
        const char *my_hostname;
@@ -29,9 +30,23 @@ struct submision_backend_relay_settings {
        bool trusted:1;
 };
 
-struct submission_backend *
+struct submission_backend_relay *
 submission_backend_relay_create(
        struct client *client,
        const struct submision_backend_relay_settings *set);
 
+/* Returns the base backend object for this relay backend */
+struct submission_backend *
+submission_backend_relay_get(struct submission_backend_relay *backend)
+       ATTR_PURE;
+
+/* Returns the client connection for this relay backend */
+struct smtp_client_connection *
+submission_backend_relay_get_connection(
+       struct submission_backend_relay *backend) ATTR_PURE;
+/* Returns the current client transaction for this relay backend */
+struct smtp_client_transaction *
+submission_backend_relay_get_transaction(
+       struct submission_backend_relay *backend) ATTR_PURE;
+
 #endif
index 1625fd37b9966ee6eb3ba2365728747b092fe284..e3e2b1f35b012a2916dc166a45642202f986af4b 100644 (file)
@@ -160,8 +160,10 @@ client_create_backend_default(struct client *client,
                relay_set.ssl_mode = SMTP_CLIENT_SSL_MODE_NONE;
        relay_set.ssl_verify = set->submission_relay_ssl_verify;
 
-       client->backend_default =
+       client->backend_default_relay =
                submission_backend_relay_create(client, &relay_set);
+       client->backend_default =
+               submission_backend_relay_get(client->backend_default_relay);
 }
 
 static void client_init_urlauth(struct client *client)
index e83a6cb6e8fb13a3869f89d20d497df8034e8595..0fc46b1cec53ef47c9ed991d7da559c9f12c7ac9 100644 (file)
@@ -7,6 +7,7 @@ struct smtp_reply;
 
 struct submission_recipient;
 struct submission_backend;
+struct submission_backend_relay;
 struct client;
 
 struct client_state {
@@ -101,6 +102,7 @@ struct client {
 
        enum smtp_capability backend_capabilities;
        struct submission_backend *backend_default;
+       struct submission_backend_relay *backend_default_relay;
        struct submission_backend *backends;
        unsigned int backends_count;