diff --git a/src/managesieve/managesieve-client.c b/src/managesieve/managesieve-client.c index bacf4600266dff8b870f46abc42e877711439c2a..79d0f864042ded758c4d627371a1ef011323df86 100644 --- a/src/managesieve/managesieve-client.c +++ b/src/managesieve/managesieve-client.c @@ -108,7 +108,6 @@ client_create(int fd_in, int fd_out, const char *session_id, const struct managesieve_settings *set) { struct client *client; - const char *ident; struct sieve_environment svenv; struct sieve_instance *svinst; struct sieve_storage *storage; @@ -167,14 +166,11 @@ client_create(int fd_in, int fd_out, const char *session_id, client->svinst = svinst; client->storage = storage; - ident = mail_user_get_anvil_userip_ident(client->user); - if (ident != NULL) { - master_service_anvil_send( - master_service, t_strconcat("CONNECT\t", my_pid, - "\tsieve/", ident, - "\n", NULL)); + struct master_service_anvil_session anvil_session; + mail_user_get_anvil_session(client->user, &anvil_session); + if (master_service_anvil_connect(master_service, &anvil_session, TRUE, + client->anvil_conn_guid)) client->anvil_sent = TRUE; - } managesieve_client_count++; DLLIST_PREPEND(&managesieve_clients, client); @@ -254,11 +250,10 @@ void client_destroy(struct client *client, const char *reason) } if (client->anvil_sent) { - master_service_anvil_send( - master_service, t_strconcat( - "DISCONNECT\t", my_pid, "\tsieve/", - mail_user_get_anvil_userip_ident(client->user), - "\n", NULL)); + struct master_service_anvil_session anvil_session; + mail_user_get_anvil_session(client->user, &anvil_session); + master_service_anvil_disconnect(master_service, &anvil_session, + client->anvil_conn_guid); } managesieve_parser_destroy(&client->parser); diff --git a/src/managesieve/managesieve-client.h b/src/managesieve/managesieve-client.h index 6053eb6a86c8cce4401cdef34e95946e85fa14cf..2448dc22bf1decded3133a1a17f5dc5fdbd27b95 100644 --- a/src/managesieve/managesieve-client.h +++ b/src/managesieve/managesieve-client.h @@ -1,6 +1,7 @@ #ifndef MANAGESIEVE_CLIENT_H #define MANAGESIEVE_CLIENT_H +#include "guid.h" #include "managesieve-commands.h" struct client; @@ -45,6 +46,7 @@ struct client { struct istream *input; struct ostream *output; struct timeout *to_idle, *to_idle_output; + guid_128_t anvil_conn_guid; pool_t pool; struct mail_storage_service_user *service_user;