diff --git a/src/managesieve/main.c b/src/managesieve/main.c index 158246c43c83240bae63563a41620e8f8460f087..49ceac5fcda55d4e5a73ba62ef4bf3b1ddc6c5ec 100644 --- a/src/managesieve/main.c +++ b/src/managesieve/main.c @@ -172,6 +172,7 @@ client_create_from_input(const struct mail_storage_service_input *input, client = client_create(fd_in, fd_out, input->session_id, event, mail_user, user, set); + client_create_finish(client); T_BEGIN { client_add_input(client, input_buf); } T_END; diff --git a/src/managesieve/managesieve-client.c b/src/managesieve/managesieve-client.c index cf1b0cfa213b37716ec3133a4dc059f92111dc2b..bacf4600266dff8b870f46abc42e877711439c2a 100644 --- a/src/managesieve/managesieve-client.c +++ b/src/managesieve/managesieve-client.c @@ -154,7 +154,6 @@ client_create(int fd_in, int fd_out, const char *session_id, o_stream_set_flush_callback(client->output, client_output, client); - client->io = io_add_istream(client->input, client_input, client); client->last_input = ioloop_time; client->to_idle = timeout_add(CLIENT_IDLE_TIMEOUT_MSECS, client_idle_timeout, client); @@ -165,14 +164,6 @@ client_create(int fd_in, int fd_out, const char *session_id, client->cmd.event = event_create(client->event); client->user = user; - if (set->rawlog_dir[0] != '\0') { - (void)iostream_rawlog_create(set->rawlog_dir, &client->input, - &client->output); - } - - client->parser = managesieve_parser_create( - client->input, set->managesieve_max_line_length); - client->svinst = svinst; client->storage = storage; @@ -194,6 +185,17 @@ client_create(int fd_in, int fd_out, const char *session_id, return client; } +void client_create_finish(struct client *client) +{ + if (client->set->rawlog_dir[0] != '\0') { + (void)iostream_rawlog_create(client->set->rawlog_dir, + &client->input, &client->output); + } + client->parser = managesieve_parser_create( + client->input, client->set->managesieve_max_line_length); + client->io = io_add_istream(client->input, client_input, client); +} + static const char *client_stats(struct client *client) { const struct var_expand_table logout_tab[] = { diff --git a/src/managesieve/managesieve-client.h b/src/managesieve/managesieve-client.h index 8367c259cac32dc8f37f584fb081cad7926f233c..6053eb6a86c8cce4401cdef34e95946e85fa14cf 100644 --- a/src/managesieve/managesieve-client.h +++ b/src/managesieve/managesieve-client.h @@ -91,6 +91,7 @@ client_create(int fd_in, int fd_out, const char *session_id, struct event *event, struct mail_user *user, struct mail_storage_service_user *service_user, const struct managesieve_settings *set); +void client_create_finish(struct client *client); void client_destroy(struct client *client, const char *reason); void client_dump_capability(struct client *client);