]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
anvil: Assert-crashfix at exit when there were fifo connections.
authorTimo Sirainen <tss@iki.fi>
Sun, 4 Sep 2011 07:15:16 +0000 (10:15 +0300)
committerTimo Sirainen <tss@iki.fi>
Sun, 4 Sep 2011 07:15:16 +0000 (10:15 +0300)
src/anvil/anvil-connection.c

index 113e39d9160fb02977227c259bac0c764ce4d5a9..1be5928f87ccd053548806456dfd2b2b3c8fea03 100644 (file)
@@ -29,6 +29,7 @@ struct anvil_connection {
        unsigned int version_received:1;
        unsigned int handshaked:1;
        unsigned int master:1;
+       unsigned int fifo:1;
 };
 
 struct anvil_connection *anvil_connections = NULL;
@@ -180,12 +181,15 @@ anvil_connection_create(int fd, bool master, bool fifo)
                conn->output = o_stream_create_fd(fd, (size_t)-1, FALSE);
        conn->io = io_add(fd, IO_READ, anvil_connection_input, conn);
        conn->master = master;
+       conn->fifo = fifo;
        DLLIST_PREPEND(&anvil_connections, conn);
        return conn;
 }
 
 void anvil_connection_destroy(struct anvil_connection *conn)
 {
+       bool fifo = conn->fifo;
+
        DLLIST_REMOVE(&anvil_connections, conn);
 
        io_remove(&conn->io);
@@ -196,7 +200,8 @@ void anvil_connection_destroy(struct anvil_connection *conn)
                i_error("close(anvil conn) failed: %m");
        i_free(conn);
 
-       master_service_client_connection_destroyed(master_service);
+       if (!fifo)
+               master_service_client_connection_destroyed(master_service);
 }
 
 void anvil_connections_destroy_all(void)