]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
doveadm: client: Set IO only after enabling SSL
authorTimo Sirainen <timo.sirainen@dovecot.fi>
Thu, 8 Feb 2018 00:38:23 +0000 (02:38 +0200)
committerTimo Sirainen <timo.sirainen@dovecot.fi>
Thu, 8 Feb 2018 10:38:16 +0000 (12:38 +0200)
io_add_istream() needs to be used with the SSL istream, otherwise it can
cause hangs.

src/doveadm/server-connection.c

index cdcb3c8926387a03d03c69f4dfc97d6a22b6ab67..269985d629275a6970facddeb27a887b7f9671e4 100644 (file)
@@ -544,7 +544,6 @@ int server_connection_create(struct doveadm_server *server,
                                                     doveadm_settings->doveadm_port);
        net_set_nonblock(conn->fd, TRUE);
        conn->input = i_stream_create_fd(conn->fd, MAX_INBUF_SIZE);
-       conn->io = io_add_istream(conn->input, server_connection_input, conn);
        conn->output = o_stream_create_fd(conn->fd, (size_t)-1);
        o_stream_set_flush_callback(conn->output, server_connection_output, conn);
        o_stream_set_no_error_handling(conn->output, TRUE);
@@ -559,6 +558,7 @@ int server_connection_create(struct doveadm_server *server,
                server_connection_destroy(&conn);
                return -1;
        }
+       conn->io = io_add_istream(conn->input, server_connection_input, conn);
 
        conn->state = SERVER_REPLY_STATE_DONE;
        o_stream_nsend_str(conn->output, DOVEADM_SERVER_PROTOCOL_VERSION_LINE"\n");