From 26436224c36f3915d7e90f42d9daac2b0faf4512 Mon Sep 17 00:00:00 2001
From: Timo Sirainen <timo.sirainen@open-xchange.com>
Date: Thu, 12 Jan 2023 23:30:36 +0200
Subject: [PATCH] global: Adjust to storage_user removal in
 mail_storage_service_lookup_next()

Also change the callers to not bother storing it separately. Instead, they
can just use mail_user_r->service_user.
---
 src/lib-sieve-tool/sieve-tool.c      | 8 ++------
 src/managesieve/main.c               | 8 +++-----
 src/managesieve/managesieve-client.c | 5 +----
 src/managesieve/managesieve-client.h | 2 --
 src/testsuite/testsuite-mailstore.c  | 4 +---
 5 files changed, 7 insertions(+), 20 deletions(-)

diff --git a/src/lib-sieve-tool/sieve-tool.c b/src/lib-sieve-tool/sieve-tool.c
index 81411a8ed..c91189372 100644
--- a/src/lib-sieve-tool/sieve-tool.c
+++ b/src/lib-sieve-tool/sieve-tool.c
@@ -52,7 +52,6 @@ struct sieve_tool {
 	struct sieve_instance *svinst;
 
 	struct mail_storage_service_ctx *storage_service;
-	struct mail_storage_service_user *service_user;
 	struct mail_user *mail_user_dovecot;
 	struct mail_user *mail_user;
 
@@ -263,7 +262,7 @@ sieve_tool_init_finish(struct sieve_tool *tool, bool init_mailstore,
 	tool->storage_service = mail_storage_service_init(
 		master_service, NULL, storage_service_flags);
 	if (mail_storage_service_lookup_next(
-		tool->storage_service, &service_input, &tool->service_user,
+		tool->storage_service, &service_input,
 		&tool->mail_user_dovecot, &errstr) <= 0)
 		i_fatal("%s", errstr);
 
@@ -334,7 +333,6 @@ void sieve_tool_deinit(struct sieve_tool **_tool)
 	if (tool->mail_user_dovecot != NULL)
 		mail_user_unref(&tool->mail_user_dovecot);
 
-	mail_storage_service_user_unref(&tool->service_user);
 	mail_storage_service_deinit(&tool->storage_service);
 
 	/* Free sieve tool object */
@@ -354,7 +352,6 @@ void sieve_tool_init_mail_user(struct sieve_tool *tool,
 			       const char *mail_location)
 {
 	struct mail_user *mail_user_dovecot = tool->mail_user_dovecot;
-	struct mail_storage_service_user *service_user;
 	const char *username = tool->username;
 	struct mail_namespace *ns = NULL;
 	const char *home = NULL, *errstr = NULL;
@@ -364,8 +361,7 @@ void sieve_tool_init_mail_user(struct sieve_tool *tool,
 		.unexpanded_set_parser = mail_user_dovecot->unexpanded_set_parser,
 		.no_userdb_lookup = TRUE,
 	};
-	if (mail_storage_service_lookup_next(tool->storage_service,
-					     &input, &service_user,
+	if (mail_storage_service_lookup_next(tool->storage_service, &input,
 					     &tool->mail_user, &errstr) < 0)
 		i_fatal("Test user lookup failed: %s", errstr);
 
diff --git a/src/managesieve/main.c b/src/managesieve/main.c
index 21eb2ffa3..2d964cf12 100644
--- a/src/managesieve/main.c
+++ b/src/managesieve/main.c
@@ -82,7 +82,7 @@ void managesieve_refresh_proctitle(void)
 
 static void client_kill_idle(struct client *client)
 {
-	mail_storage_service_io_activate_user(client->service_user);
+	mail_storage_service_io_activate_user(client->user->service_user);
 	client_send_bye(client, MASTER_SERVICE_SHUTTING_DOWN_MSG".");
 	client_destroy(client, MASTER_SERVICE_SHUTTING_DOWN_MSG);
 }
@@ -145,7 +145,6 @@ client_create_from_input(const struct mail_storage_service_input *input,
 			 const char **error_r)
 {
 	struct mail_storage_service_input service_input;
-	struct mail_storage_service_user *user;
 	struct mail_user *mail_user;
 	struct client *client;
 	struct managesieve_settings *set;
@@ -163,7 +162,7 @@ client_create_from_input(const struct mail_storage_service_input *input,
 	service_input = *input;
 	service_input.event_parent = event;
 	if (mail_storage_service_lookup_next(storage_service, &service_input,
-					     &user, &mail_user, error_r) <= 0) {
+					     &mail_user, error_r) <= 0) {
 		event_unref(&event);
 		return -1;
 	}
@@ -177,14 +176,13 @@ client_create_from_input(const struct mail_storage_service_input *input,
 	if (mail_user_var_expand(mail_user, &managesieve_setting_parser_info,
 				 set, &error) <= 0) {
 		e_error(event, "Failed to expand settings: %s", error);
-		mail_storage_service_user_unref(&user);
 		mail_user_unref(&mail_user);
 		event_unref(&event);
 		return -1;
 	}
 
 	client = client_create(fd_in, fd_out, input->session_id,
-			       event, mail_user, user, set);
+			       event, mail_user, set);
 	if (input_buf != NULL && input_buf->used > 0)
 		client_add_istream_prefix(client, input_buf);
 	client_create_finish(client);
diff --git a/src/managesieve/managesieve-client.c b/src/managesieve/managesieve-client.c
index 30b4dce62..604a7f03e 100644
--- a/src/managesieve/managesieve-client.c
+++ b/src/managesieve/managesieve-client.c
@@ -104,7 +104,6 @@ client_get_storage(struct sieve_instance *svinst, struct event *event,
 struct client *
 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)
 {
 	struct client *client;
@@ -139,7 +138,6 @@ client_create(int fd_in, int fd_out, const char *session_id,
 	client->event = event;
 	event_ref(client->event);
 	client->set = set;
-	client->service_user = service_user;
 	client->session_id = p_strdup(pool, session_id);
 	client->fd_in = fd_in;
 	client->fd_out = fd_out;
@@ -281,7 +279,6 @@ void client_destroy(struct client *client, const char *reason)
 
 	event_unref(&client->cmd.event);
 	pool_unref(&client->cmd.pool);
-	mail_storage_service_user_unref(&client->service_user);
 
 	managesieve_client_count--;
 	DLLIST_REMOVE(&managesieve_clients, client);
@@ -781,7 +778,7 @@ int client_output(struct client *client)
 
 void client_kick(struct client *client)
 {
-	mail_storage_service_io_activate_user(client->service_user);
+	mail_storage_service_io_activate_user(client->user->service_user);
 	if (!client->command_pending)
 		client_send_bye(client, MASTER_SERVICE_SHUTTING_DOWN_MSG".");
 	client_destroy(client, MASTER_SERVICE_SHUTTING_DOWN_MSG);
diff --git a/src/managesieve/managesieve-client.h b/src/managesieve/managesieve-client.h
index 96a6646f0..f674aa618 100644
--- a/src/managesieve/managesieve-client.h
+++ b/src/managesieve/managesieve-client.h
@@ -49,7 +49,6 @@ struct client {
 	guid_128_t anvil_conn_guid;
 
 	pool_t pool;
-	struct mail_storage_service_user *service_user;
 	const struct managesieve_settings *set;
 
 	struct mail_user *user;
@@ -91,7 +90,6 @@ extern unsigned int managesieve_client_count;
 struct client *
 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);
diff --git a/src/testsuite/testsuite-mailstore.c b/src/testsuite/testsuite-mailstore.c
index 730e5507c..bcf99606b 100644
--- a/src/testsuite/testsuite-mailstore.c
+++ b/src/testsuite/testsuite-mailstore.c
@@ -61,7 +61,6 @@ static char *testsuite_mailstore_attrs = NULL;
 
 void testsuite_mailstore_init(void)
 {
-	struct mail_storage_service_user *service_user;
 	struct mail_user *mail_user_dovecot, *mail_user;
 	struct mail_namespace *ns;
 	struct mail_namespace_settings *ns_set;
@@ -95,9 +94,8 @@ void testsuite_mailstore_init(void)
 	};
 	if (mail_storage_service_lookup_next(
 			sieve_tool_get_mail_storage_service(sieve_tool),
-			&input, &service_user, &mail_user, &error) < 0)
+			&input, &mail_user, &error) < 0)
 		i_fatal("Test user initialization failed: %s", error);
-	mail_storage_service_user_unref(&service_user);
 	mail_user->autocreated = TRUE;
 
 	ns_set = p_new(mail_user->pool, struct mail_namespace_settings, 1);
-- 
GitLab