From: Timo Sirainen Date: Thu, 21 Nov 2019 13:30:38 +0000 (+0200) Subject: imap: Remove imap_client.session_id X-Git-Tag: 2.3.9~18 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=da711d25d918caa5a8de4ccb3e2c9004acb1b84f;p=thirdparty%2Fdovecot%2Fcore.git imap: Remove imap_client.session_id Use mail_user.session_id instead. The imap_client.session_id was NULL for command line sessions, which gets fixed by using mail_user.session_id. --- diff --git a/src/imap/imap-client-hibernate.c b/src/imap/imap-client-hibernate.c index d85bad0d78..b8c2c32d0f 100644 --- a/src/imap/imap-client-hibernate.c +++ b/src/imap/imap-client-hibernate.c @@ -61,10 +61,8 @@ static void imap_hibernate_write_cmd(struct client *client, string_t *cmd, (unsigned long long)peer_st.st_ino); } - if (client->session_id != NULL) { - str_append(cmd, "\tsession="); - str_append_tabescaped(cmd, client->session_id); - } + str_append(cmd, "\tsession="); + str_append_tabescaped(cmd, user->session_id); if (user->session_create_time != 0) { str_printfa(cmd, "\tsession_created=%s", dec2str(user->session_create_time)); diff --git a/src/imap/imap-client.c b/src/imap/imap-client.c index 6dc784980b..968da5e056 100644 --- a/src/imap/imap-client.c +++ b/src/imap/imap-client.c @@ -68,7 +68,7 @@ static void client_init_urlauth(struct client *client) config.url_port = client->set->imap_urlauth_port; config.socket_path = t_strconcat(client->user->set->base_dir, "/"IMAP_URLAUTH_SOCKET_NAME, NULL); - config.session_id = client->session_id; + config.session_id = client->user->session_id; config.access_user = client->user->username; config.access_service = "imap"; config.access_anonymous = client->user->anonymous; @@ -107,7 +107,7 @@ static bool user_has_special_use_mailboxes(struct mail_user *user) return FALSE; } -struct client *client_create(int fd_in, int fd_out, const char *session_id, +struct client *client_create(int fd_in, int fd_out, struct event *event, struct mail_user *user, struct mail_storage_service_user *service_user, const struct imap_settings *set, @@ -131,7 +131,6 @@ struct client *client_create(int fd_in, int fd_out, const char *session_id, client->set = set; client->smtp_set = smtp_set; client->service_user = service_user; - client->session_id = p_strdup(pool, session_id); client->fd_in = fd_in; client->fd_out = fd_out; client->input = i_stream_create_fd(fd_in, @@ -279,7 +278,7 @@ const char *client_stats(struct client *client) const struct var_expand_table logout_tab[] = { { 'i', dec2str(i_stream_get_absolute_offset(client->input)), "input" }, { 'o', dec2str(client->output->offset), "output" }, - { '\0', client->session_id, "session" }, + { '\0', client->user->session_id, "session" }, { '\0', dec2str(client->fetch_hdr_count), "fetch_hdr_count" }, { '\0', dec2str(client->fetch_hdr_bytes), "fetch_hdr_bytes" }, { '\0', dec2str(client->fetch_body_count), "fetch_body_count" }, diff --git a/src/imap/imap-client.h b/src/imap/imap-client.h index 557d7d9f58..f2ffe0d7c9 100644 --- a/src/imap/imap-client.h +++ b/src/imap/imap-client.h @@ -153,7 +153,6 @@ struct client { struct imap_client_vfuncs v; struct event *event; - const char *session_id; const char *const *userdb_fields; /* for internal session saving/restoring */ int fd_in, fd_out; @@ -262,7 +261,7 @@ extern unsigned int imap_feature_qresync; /* Create new client with specified input/output handles. socket specifies if the handle is a socket. */ -struct client *client_create(int fd_in, int fd_out, const char *session_id, +struct client *client_create(int fd_in, int fd_out, struct event *event, struct mail_user *user, struct mail_storage_service_user *service_user, const struct imap_settings *set, diff --git a/src/imap/main.c b/src/imap/main.c index 7f6e98ab44..dd0478991a 100644 --- a/src/imap/main.c +++ b/src/imap/main.c @@ -289,7 +289,7 @@ int client_create_from_input(const struct mail_storage_service_input *input, return -1; } - client = client_create(fd_in, fd_out, input->session_id, + client = client_create(fd_in, fd_out, event, mail_user, user, imap_set, smtp_set); client->userdb_fields = input->userdb_fields == NULL ? NULL : p_strarray_dup(client->pool, input->userdb_fields);