#include "ostream.h"
#include "iostream-temp.h"
#include "master-service.h"
-#include "lmtp-client.h"
-#include "lda-settings.h"
-#include "mail-deliver.h"
#include "program-client.h"
+#include "lmtp-client.h"
#include "smtp-submit.h"
#include <unistd.h>
struct ostream *output;
struct istream *input;
- const struct lda_settings *set;
+ struct smtp_submit_settings set;
ARRAY_TYPE(const_string) destinations;
const char *return_path;
const char *error;
};
struct smtp_submit *
-smtp_submit_init(const struct lda_settings *set, const char *return_path)
+smtp_submit_init(const struct smtp_submit_settings *set, const char *return_path)
{
struct smtp_submit *subm;
pool_t pool;
pool = pool_alloconly_create("smtp submit", 256);
subm = p_new(pool, struct smtp_submit, 1);
subm->pool = pool;
- subm->set = set;
+
+ subm->set.hostname = p_strdup_empty(pool, set->hostname);
+ subm->set.submission_host = p_strdup_empty(pool, set->submission_host);
+ subm->set.sendmail_path = p_strdup_empty(pool, set->sendmail_path);
+
subm->return_path = p_strdup(pool, return_path);
p_array_init(&subm->destinations, pool, 2);
return subm;
subm->tempfail = tempfail;
subm->error = p_strdup_printf(subm->pool,
"smtp(%s): %s",
- subm->set->submission_host, error);
+ subm->set.submission_host, error);
}
}
const char *host, *const *destp;
in_port_t port;
- if (net_str2hostport(subm->set->submission_host,
+ if (net_str2hostport(subm->set.submission_host,
DEFAULT_SUBMISSION_PORT, &host, &port) < 0) {
*error_r = t_strdup_printf(
"Invalid submission_host: %s", host);
i_zero(&client_set);
client_set.mail_from = subm->return_path == NULL ? "<>" :
t_strconcat("<", subm->return_path, ">", NULL);
- client_set.my_hostname = subm->set->hostname;
+ client_set.my_hostname = subm->set.hostname;
client_set.timeout_secs = timeout_secs;
ioloop = io_loop_create();
struct program_client *pc;
int ret;
- sendmail_args = t_strsplit(subm->set->sendmail_path, " ");
+ sendmail_args = t_strsplit(subm->set.sendmail_path, " ");
t_array_init(&args, 16);
i_assert(sendmail_args[0] != NULL);
sendmail_bin = sendmail_args[0];
subm->input = iostream_temp_finish
(&subm->output, IO_BLOCK_SIZE);
- if (*subm->set->submission_host != '\0') {
+ if (subm->set.submission_host != NULL) {
ret = smtp_submit_send_host
(subm, timeout_secs, error_r);
} else {
typedef void (*test_server_init_t)(unsigned int index);
typedef bool (*test_client_init_t)
- (const struct lda_settings *submit_set);
+ (const struct smtp_submit_settings *submit_set);
/*
* State
/* client */
static void
-test_client_defaults(struct lda_settings *smtp_set);
+test_client_defaults(struct smtp_submit_settings *smtp_set);
static void test_client_deinit(void);
static int
-test_client_smtp_send_simple(const struct lda_settings *smtp_set,
+test_client_smtp_send_simple(const struct smtp_submit_settings *smtp_set,
const char *message, const char *host,
unsigned int timeout_secs, const char **error_r);
static int
-test_client_smtp_send_simple_port(const struct lda_settings *smtp_set,
+test_client_smtp_send_simple_port(const struct smtp_submit_settings *smtp_set,
const char *message, unsigned int port,
unsigned int timeout_secs, const char **error_r);
test_message_delivery(const char *message, const char *file);
static void test_run_client_server(
- const struct lda_settings *submit_set,
+ const struct smtp_submit_settings *submit_set,
test_client_init_t client_test,
test_server_init_t server_test,
unsigned int server_tests_count)
/* client */
static bool
-test_client_host_lookup_failed(const struct lda_settings *submit_set)
+test_client_host_lookup_failed(const struct smtp_submit_settings *submit_set)
{
const char *error = NULL;
int ret;
static void test_host_lookup_failed(void)
{
- struct lda_settings smtp_submit_set;
+ struct smtp_submit_settings smtp_submit_set;
test_client_defaults(&smtp_submit_set);
/* client */
static bool
-test_client_connection_refused(const struct lda_settings *submit_set)
+test_client_connection_refused(const struct smtp_submit_settings *submit_set)
{
const char *error = NULL;
int ret;
static void test_connection_refused(void)
{
- struct lda_settings smtp_submit_set;
+ struct smtp_submit_settings smtp_submit_set;
test_client_defaults(&smtp_submit_set);
/* client */
static bool
-test_client_connection_timed_out(const struct lda_settings *submit_set)
+test_client_connection_timed_out(const struct smtp_submit_settings *submit_set)
{
time_t time;
const char *error = NULL;
static void test_connection_timed_out(void)
{
- struct lda_settings smtp_submit_set;
+ struct smtp_submit_settings smtp_submit_set;
test_client_defaults(&smtp_submit_set);
/* client */
static bool
-test_client_bad_greeting(const struct lda_settings *submit_set)
+test_client_bad_greeting(const struct smtp_submit_settings *submit_set)
{
const char *error = NULL;
int ret;
static void test_bad_greeting(void)
{
- struct lda_settings smtp_submit_set;
+ struct smtp_submit_settings smtp_submit_set;
test_client_defaults(&smtp_submit_set);
/* client */
static bool
-test_client_denied_helo(const struct lda_settings *submit_set)
+test_client_denied_helo(const struct smtp_submit_settings *submit_set)
{
const char *error = NULL;
int ret;
static void test_denied_helo(void)
{
- struct lda_settings smtp_submit_set;
+ struct smtp_submit_settings smtp_submit_set;
test_client_defaults(&smtp_submit_set);
/* client */
static bool
-test_client_disconnect_helo(const struct lda_settings *submit_set)
+test_client_disconnect_helo(const struct smtp_submit_settings *submit_set)
{
const char *error = NULL;
int ret;
static void test_disconnect_helo(void)
{
- struct lda_settings smtp_submit_set;
+ struct smtp_submit_settings smtp_submit_set;
test_client_defaults(&smtp_submit_set);
/* client */
static bool
-test_client_denied_mail(const struct lda_settings *submit_set)
+test_client_denied_mail(const struct smtp_submit_settings *submit_set)
{
const char *error = NULL;
int ret;
static void test_denied_mail(void)
{
- struct lda_settings smtp_submit_set;
+ struct smtp_submit_settings smtp_submit_set;
test_client_defaults(&smtp_submit_set);
/* client */
static bool
-test_client_denied_rcpt(const struct lda_settings *submit_set)
+test_client_denied_rcpt(const struct smtp_submit_settings *submit_set)
{
const char *error = NULL;
int ret;
static void test_denied_rcpt(void)
{
- struct lda_settings smtp_submit_set;
+ struct smtp_submit_settings smtp_submit_set;
test_client_defaults(&smtp_submit_set);
/* client */
static bool
-test_client_denied_second_rcpt(const struct lda_settings *submit_set)
+test_client_denied_second_rcpt(const struct smtp_submit_settings *submit_set)
{
struct smtp_submit *smtp_submit;
- struct lda_settings smtp_submit_set;
+ struct smtp_submit_settings smtp_submit_set;
struct ostream *output;
const char *error = NULL;
int ret;
static void test_denied_second_rcpt(void)
{
- struct lda_settings smtp_submit_set;
+ struct smtp_submit_settings smtp_submit_set;
test_client_defaults(&smtp_submit_set);
/* client */
static bool
-test_client_denied_data(const struct lda_settings *submit_set)
+test_client_denied_data(const struct smtp_submit_settings *submit_set)
{
const char *error = NULL;
int ret;
static void test_denied_data(void)
{
- struct lda_settings smtp_submit_set;
+ struct smtp_submit_settings smtp_submit_set;
test_client_defaults(&smtp_submit_set);
/* client */
static bool
-test_client_data_failure(const struct lda_settings *submit_set)
+test_client_data_failure(const struct smtp_submit_settings *submit_set)
{
const char *error = NULL;
int ret;
static void test_data_failure(void)
{
- struct lda_settings smtp_submit_set;
+ struct smtp_submit_settings smtp_submit_set;
test_client_defaults(&smtp_submit_set);
/* client */
static bool
-test_client_data_disconnect(const struct lda_settings *submit_set)
+test_client_data_disconnect(const struct smtp_submit_settings *submit_set)
{
const char *error = NULL;
int ret;
static void test_data_disconnect(void)
{
- struct lda_settings smtp_submit_set;
+ struct smtp_submit_settings smtp_submit_set;
test_client_defaults(&smtp_submit_set);
/* client */
static bool
-test_client_data_timout(const struct lda_settings *submit_set)
+test_client_data_timout(const struct smtp_submit_settings *submit_set)
{
time_t time;
const char *error = NULL;
static void test_data_timeout(void)
{
- struct lda_settings smtp_submit_set;
+ struct smtp_submit_settings smtp_submit_set;
test_client_defaults(&smtp_submit_set);
/* client */
static bool
-test_client_successful_delivery(const struct lda_settings *submit_set)
+test_client_successful_delivery(const struct smtp_submit_settings *submit_set)
{
const char *error = NULL;
int ret;
static void test_successful_delivery(void)
{
- struct lda_settings smtp_submit_set;
+ struct smtp_submit_settings smtp_submit_set;
test_client_defaults(&smtp_submit_set);
/* client */
static bool
-test_client_failed_sendmail(const struct lda_settings *submit_set)
+test_client_failed_sendmail(const struct smtp_submit_settings *submit_set)
{
- struct lda_settings smtp_submit_set;
+ struct smtp_submit_settings smtp_submit_set;
struct smtp_submit *smtp_submit;
struct ostream *output;
const char *sendmail_path, *error = NULL;
static void test_failed_sendmail(void)
{
- struct lda_settings smtp_submit_set;
+ struct smtp_submit_settings smtp_submit_set;
test_client_defaults(&smtp_submit_set);
/* client */
static bool
-test_client_successful_sendmail(const struct lda_settings *submit_set)
+test_client_successful_sendmail(const struct smtp_submit_settings *submit_set)
{
- struct lda_settings smtp_submit_set;
+ struct smtp_submit_settings smtp_submit_set;
struct smtp_submit *smtp_submit;
struct ostream *output;
const char *sendmail_path, *msg_path, *error = NULL;
static void test_successful_sendmail(void)
{
- struct lda_settings smtp_client_set;
+ struct smtp_submit_settings smtp_submit_set;
- test_client_defaults(&smtp_client_set);
+ test_client_defaults(&smtp_submit_set);
test_begin("successful sendmail");
test_expect_errors(0);
- test_run_client_server(&smtp_client_set,
+ test_run_client_server(&smtp_submit_set,
test_client_successful_sendmail, NULL, 0);
test_end();
}
*/
static void
-test_client_defaults(struct lda_settings *smtp_set)
+test_client_defaults(struct smtp_submit_settings *smtp_set)
{
i_zero(smtp_set);
smtp_set->hostname = "test";
}
static int
-test_client_smtp_send_simple(const struct lda_settings *smtp_set,
+test_client_smtp_send_simple(const struct smtp_submit_settings *smtp_set,
const char *message, const char *host,
unsigned int timeout_secs, const char **error_r)
{
- struct lda_settings smtp_submit_set;
+ struct smtp_submit_settings smtp_submit_set;
struct smtp_submit *smtp_submit;
struct ostream *output;
}
static int
-test_client_smtp_send_simple_port(const struct lda_settings *smtp_set,
+test_client_smtp_send_simple_port(const struct smtp_submit_settings *smtp_set,
const char *message, unsigned int port,
unsigned int timeout_secs, const char **error_r)
{
}
static void test_run_client_server(
- const struct lda_settings *submit_set,
+ const struct smtp_submit_settings *submit_set,
test_client_init_t client_test,
test_server_init_t server_test,
unsigned int server_tests_count)