]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
lib-master: ipc-client: Split code to ipc_client_abort_commands()
authorTimo Sirainen <timo.sirainen@dovecot.fi>
Thu, 5 Jul 2018 11:35:51 +0000 (14:35 +0300)
committerTimo Sirainen <timo.sirainen@open-xchange.com>
Fri, 25 Jan 2019 10:47:18 +0000 (12:47 +0200)
src/lib-master/ipc-client.c

index 7bb5537d1ddcd3073c59b540ccf628af0a2627ce..e13344b8e472b8f88b013dc0556f8fa524cb2f5e 100644 (file)
@@ -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);