Skip to content

Commit

Permalink
submission: relay backend: Provide access to the client connection an…
Browse files Browse the repository at this point in the history
…d transaction for plugins.
  • Loading branch information
stephanbosch authored and villesavolainen committed Feb 12, 2019
1 parent e559e82 commit 6b49a29
Show file tree
Hide file tree
Showing 4 changed files with 42 additions and 3 deletions.
22 changes: 21 additions & 1 deletion src/submission/submission-backend-relay.c
Expand Up @@ -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)
Expand Down Expand Up @@ -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 =
Expand Down
17 changes: 16 additions & 1 deletion src/submission/submission-backend-relay.h
Expand Up @@ -6,6 +6,7 @@
#include "submission-backend.h"

struct client;
struct submission_backend_relay;

struct submision_backend_relay_settings {
const char *my_hostname;
Expand All @@ -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
4 changes: 3 additions & 1 deletion src/submission/submission-client.c
Expand Up @@ -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)
Expand Down
2 changes: 2 additions & 0 deletions src/submission/submission-client.h
Expand Up @@ -7,6 +7,7 @@ struct smtp_reply;

struct submission_recipient;
struct submission_backend;
struct submission_backend_relay;
struct client;

struct client_state {
Expand Down Expand Up @@ -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;

Expand Down

0 comments on commit 6b49a29

Please sign in to comment.