]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
lib: connection - only switch created iostreams
authorAki Tuomi <aki.tuomi@dovecot.fi>
Mon, 19 Feb 2018 17:09:46 +0000 (19:09 +0200)
committerVille Savolainen <ville.savolainen@dovecot.fi>
Tue, 13 Mar 2018 05:37:35 +0000 (07:37 +0200)
Fixes imap-hibernate: Fatal: master: service(imap-hibernate):
child killed with signal 11 (core dumps disabled)

Broken in 086b73efd1a5812a64acc951366a499d325509a6

src/lib/connection.c

index 5fb456ec4729a35c2ffdfad02c4fc44b81130b58..b43d3094ed96d2a3a4c1aa6edc1cf2cbba52cae8 100644 (file)
@@ -159,6 +159,7 @@ static void connection_init_streams(struct connection *conn)
                        conn->input = i_stream_create_fd(conn->fd_in,
                                                         set->input_max_size);
                i_stream_set_name(conn->input, conn->name);
+               i_stream_switch_ioloop_to(conn->input, conn->ioloop);
        }
        if (set->output_max_size != 0) {
                if (conn->unix_socket)
@@ -170,9 +171,8 @@ static void connection_init_streams(struct connection *conn)
                o_stream_set_no_error_handling(conn->output, TRUE);
                o_stream_set_finish_via_child(conn->output, FALSE);
                o_stream_set_name(conn->output, conn->name);
+               o_stream_switch_ioloop_to(conn->output, conn->ioloop);
        }
-       i_stream_switch_ioloop_to(conn->input, conn->ioloop);
-       o_stream_switch_ioloop_to(conn->output, conn->ioloop);
        connection_input_resume(conn);
        if (set->input_idle_timeout_secs != 0) {
                conn->to = timeout_add_to(conn->ioloop,