]> 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)
committerVille Savolainen <ville.savolainen@dovecot.fi>
Tue, 13 Nov 2018 11:09:56 +0000 (13:09 +0200)
src/lib-master/ipc-client.c

index 3540130ef4029466f5220b7c1bad8bc847adfe9e..213347acf7218e3fd273078282cf22b5deb62418 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);