* Relay backend
*/
-struct submission_backend *
+struct submission_backend_relay *
submission_backend_relay_create(
struct client *client,
const struct submision_backend_relay_settings *set)
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 =
#include "submission-backend.h"
struct client;
+struct submission_backend_relay;
struct submision_backend_relay_settings {
const char *my_hostname;
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
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)
struct submission_recipient;
struct submission_backend;
+struct submission_backend_relay;
struct client;
struct client_state {
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;