};
struct smtp_submit_session *
-smtp_submit_session_init(const struct smtp_submit_settings *set,
- const struct ssl_iostream_settings *ssl_set)
+smtp_submit_session_init(const struct smtp_submit_input *input,
+ const struct smtp_submit_settings *set)
{
struct smtp_submit_session *session;
pool_t pool;
session->set.submission_ssl =
p_strdup_empty(pool, set->submission_ssl);
- if (ssl_set != NULL)
- ssl_iostream_settings_init_from(pool, &session->ssl_set, ssl_set);
+ if (input->ssl != NULL) {
+ ssl_iostream_settings_init_from(pool, &session->ssl_set,
+ input->ssl);
+ }
return session;
}
}
struct smtp_submit *
-smtp_submit_init_simple(const struct smtp_submit_settings *set,
- const struct ssl_iostream_settings *ssl_set,
+smtp_submit_init_simple(const struct smtp_submit_input *input,
+ const struct smtp_submit_settings *set,
const struct smtp_address *mail_from)
{
struct smtp_submit_session *session;
struct smtp_submit *subm;
- session = smtp_submit_session_init(set, ssl_set);
+ session = smtp_submit_session_init(input, set);
subm = smtp_submit_init(session, mail_from);
subm->simple = TRUE;
return subm;
struct smtp_submit_session;
struct smtp_submit;
+struct smtp_submit_input {
+ /* SSL settings */
+ const struct ssl_iostream_settings *ssl;
+};
+
struct smtp_submit_result {
/* 1 on success,
0 on permanent failure (e.g. invalid destination),
/* Use submit session to reuse resources (e.g. SMTP connections) between
submissions (FIXME: actually implement this) */
struct smtp_submit_session *
-smtp_submit_session_init(const struct smtp_submit_settings *set,
- const struct ssl_iostream_settings *ssl_set) ATTR_NULL(2);
+smtp_submit_session_init(const struct smtp_submit_input *input,
+ const struct smtp_submit_settings *set);
void smtp_submit_session_deinit(struct smtp_submit_session **_session);
struct smtp_submit *
smtp_submit_init(struct smtp_submit_session *session,
const struct smtp_address *mail_from);
struct smtp_submit *
-smtp_submit_init_simple(const struct smtp_submit_settings *set,
- const struct ssl_iostream_settings *ssl_set,
+smtp_submit_init_simple(const struct smtp_submit_input *input,
+ const struct smtp_submit_settings *set,
const struct smtp_address *mail_from) ATTR_NULL(2);
void smtp_submit_deinit(struct smtp_submit **_submit);
test_client_denied_second_rcpt(const struct smtp_submit_settings *submit_set)
{
struct smtp_submit *smtp_submit;
+ struct smtp_submit_input smtp_input;
struct smtp_submit_settings smtp_submit_set;
struct ostream *output;
const char *error = NULL;
t_strdup_printf("127.0.0.1:%u", bind_ports[0]);
smtp_submit_set.submission_timeout = 1000;
- smtp_submit = smtp_submit_init_simple(&smtp_submit_set, NULL,
+ i_zero(&smtp_input);
+ smtp_submit = smtp_submit_init_simple(&smtp_input, &smtp_submit_set,
SMTP_ADDRESS_LITERAL("sender", "example.com"));
smtp_submit_add_rcpt(smtp_submit,
static bool
test_client_parallel_delivery(const struct smtp_submit_settings *submit_set)
{
+ struct smtp_submit_input smtp_input;
struct smtp_submit_settings smtp_submit_set;
struct _parallel_delivery_client *ctx;
struct smtp_submit *smtp_submit1, *smtp_submit2;
smtp_submit_set.submission_timeout = 5;
/* submit 1 */
+ i_zero(&smtp_input);
smtp_submit_set.submission_host =
t_strdup_printf("127.0.0.1:%u", bind_ports[0]);
- smtp_submit1 = smtp_submit_init_simple(&smtp_submit_set, NULL,
+ smtp_submit1 = smtp_submit_init_simple(&smtp_input, &smtp_submit_set,
SMTP_ADDRESS_LITERAL("sender", "example.com"));
smtp_submit_add_rcpt(smtp_submit1,
test_client_parallel_delivery_callback, ctx);
/* submit 2 */
+ i_zero(&smtp_input);
smtp_submit_set.submission_host =
t_strdup_printf("127.0.0.1:%u", bind_ports[1]);
- smtp_submit2 = smtp_submit_init_simple(&smtp_submit_set, NULL,
+ smtp_submit2 = smtp_submit_init_simple(&smtp_input, &smtp_submit_set,
SMTP_ADDRESS_LITERAL("sender", "example.com"));
smtp_submit_add_rcpt(smtp_submit2,
test_client_failed_sendmail(const struct smtp_submit_settings *submit_set)
{
struct smtp_submit_settings smtp_submit_set;
+ struct smtp_submit_input smtp_input;
struct smtp_submit *smtp_submit;
struct ostream *output;
const char *sendmail_path, *error = NULL;
smtp_submit_set.sendmail_path = sendmail_path;
smtp_submit_set.submission_timeout = 5;
- smtp_submit = smtp_submit_init_simple(&smtp_submit_set, NULL,
+ i_zero(&smtp_input);
+ smtp_submit = smtp_submit_init_simple(&smtp_input, &smtp_submit_set,
SMTP_ADDRESS_LITERAL("sender", "example.com"));
smtp_submit_add_rcpt(smtp_submit,
static bool
test_client_successful_sendmail(const struct smtp_submit_settings *submit_set)
{
+ struct smtp_submit_input smtp_input;
struct smtp_submit_settings smtp_submit_set;
struct smtp_submit *smtp_submit;
struct ostream *output;
smtp_submit_set.sendmail_path = sendmail_path;
smtp_submit_set.submission_timeout = 5;
- smtp_submit = smtp_submit_init_simple(&smtp_submit_set, NULL,
+ i_zero(&smtp_input);
+ smtp_submit = smtp_submit_init_simple(&smtp_input, &smtp_submit_set,
SMTP_ADDRESS_LITERAL("sender", "example.com"));
smtp_submit_add_rcpt(smtp_submit,
static bool
test_client_parallel_sendmail(const struct smtp_submit_settings *submit_set)
{
+ struct smtp_submit_input smtp_input;
struct smtp_submit_settings smtp_submit_set;
struct _parallel_sendmail_client *ctx;
struct smtp_submit *smtp_submit1, *smtp_submit2;
smtp_submit_set.submission_timeout = 5;
/* submit 1 */
+ i_zero(&smtp_input);
smtp_submit_set.sendmail_path = sendmail_path1;
- smtp_submit1 = smtp_submit_init_simple(&smtp_submit_set, NULL,
+ smtp_submit1 = smtp_submit_init_simple(&smtp_input, &smtp_submit_set,
SMTP_ADDRESS_LITERAL("sender", "example.com"));
smtp_submit_add_rcpt(smtp_submit1,
test_client_parallel_sendmail_callback, ctx);
/* submit 2 */
+ i_zero(&smtp_input);
smtp_submit_set.sendmail_path = sendmail_path2;
- smtp_submit2 = smtp_submit_init_simple(&smtp_submit_set, NULL,
+ smtp_submit2 = smtp_submit_init_simple(&smtp_input, &smtp_submit_set,
SMTP_ADDRESS_LITERAL("sender", "example.com"));
smtp_submit_add_rcpt(smtp_submit2,
const char *message, const char *host,
const char **error_r)
{
+ struct smtp_submit_input smtp_input;
struct smtp_submit_settings smtp_submit_set;
struct smtp_submit *smtp_submit;
struct ostream *output;
smtp_submit_set = *smtp_set;
smtp_submit_set.submission_host = host,
- smtp_submit = smtp_submit_init_simple(&smtp_submit_set, NULL,
+ i_zero(&smtp_input);
+ smtp_submit = smtp_submit_init_simple(&smtp_input, &smtp_submit_set,
SMTP_ADDRESS_LITERAL("sender", "example.com"));
smtp_submit_add_rcpt(smtp_submit,