From: Timo Sirainen Date: Thu, 5 Jul 2018 11:35:51 +0000 (+0300) Subject: lib-master: ipc-client: Split code to ipc_client_abort_commands() X-Git-Tag: 2.3.4~163 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=9a7449a3793f7f7ad4deac196d63ceaa26a3752c;p=thirdparty%2Fdovecot%2Fcore.git lib-master: ipc-client: Split code to ipc_client_abort_commands() --- diff --git a/src/lib-master/ipc-client.c b/src/lib-master/ipc-client.c index 3540130ef4..213347acf7 100644 --- a/src/lib-master/ipc-client.c +++ b/src/lib-master/ipc-client.c @@ -101,21 +101,26 @@ static int ipc_client_connect(struct ipc_client *client) return 0; } -static void ipc_client_disconnect(struct ipc_client *client) +static void ipc_client_abort_commands(struct ipc_client *client, + const char *reason) { struct ipc_client_cmd *cmd, *next; - if (client->fd == -1) - return; - cmd = client->cmds_head; client->cmds_head = client->cmds_tail = NULL; for (; cmd != NULL; cmd = next) { - cmd->callback(IPC_CLIENT_CMD_STATE_ERROR, - "Disconnected", cmd->context); + cmd->callback(IPC_CLIENT_CMD_STATE_ERROR, reason, cmd->context); next = cmd->next; i_free(cmd); } +} + +static void ipc_client_disconnect(struct ipc_client *client) +{ + if (client->fd == -1) + return; + + ipc_client_abort_commands(client, "Disconnected"); io_remove(&client->io); i_stream_destroy(&client->input);