changeset 13038:c46b1ce45cd1

doveadm server: Fixed running multiple commands without crashing.
author Timo Sirainen <tss@iki.fi>
date Fri, 20 May 2011 14:20:46 +0300
parents b6568a36ecf9
children c67ba5bf1ba9
files src/doveadm/client-connection.c src/doveadm/doveadm-mail-server.c
diffstat 2 files changed, 10 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/src/doveadm/client-connection.c	Fri May 20 14:08:43 2011 +0300
+++ b/src/doveadm/client-connection.c	Fri May 20 14:20:46 2011 +0300
@@ -47,7 +47,7 @@
 	struct doveadm_mail_cmd_context *ctx;
 	const struct doveadm_mail_cmd *cmd;
 	const char *getopt_args;
-	bool add_username_header = FALSE;
+	bool ret, add_username_header = FALSE;
 	int c;
 
 	cmd = doveadm_mail_cmd_find(cmd_name);
@@ -101,9 +101,14 @@
 	}
 
 	doveadm_mail_single_user(ctx, argv, input, service_flags);
+	doveadm_mail_server_flush();
 	ctx->v.deinit(ctx);
 	doveadm_print_flush();
-	return !ctx->failed;
+	mail_storage_service_deinit(&ctx->storage_service);
+	ret = !ctx->failed;
+	pool_unref(&ctx->pool);
+
+	return ret;
 }
 
 static bool client_handle_command(struct client_connection *conn, char **args)
--- a/src/doveadm/doveadm-mail-server.c	Fri May 20 14:08:43 2011 +0300
+++ b/src/doveadm/doveadm-mail-server.c	Fri May 20 14:20:46 2011 +0300
@@ -289,8 +289,10 @@
 {
 	struct doveadm_server *server;
 
-	if (servers == NULL)
+	if (servers == NULL) {
+		cmd_ctx = NULL;
 		return;
+	}
 
 	while ((server = doveadm_server_find_used()) != NULL &&
 	       !DOVEADM_MAIL_SERVER_FAILED())