]> 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, 15 Feb 2018 10:20:27 +0000 (12:20 +0200)
io_add_istream() needs to be used with the SSL istream, otherwise it can
cause hangs.

src/doveadm/server-connection.c

index 53a7410defab474ae32b6bc2f4cc6e7fb1651d7d..948308bd6d185c7fe22df66848a8b3cf2d07f87c 100644 (file)
@@ -537,7 +537,6 @@ int server_connection_create(struct doveadm_server *server,
        conn->fd = doveadm_connect_with_default_port(server->name,
                                                     doveadm_settings->doveadm_port);
        net_set_nonblock(conn->fd, TRUE);
-       conn->io = io_add(conn->fd, IO_READ, server_connection_input, conn);
        conn->input = i_stream_create_fd(conn->fd, MAX_INBUF_SIZE, FALSE);
        conn->output = o_stream_create_fd(conn->fd, (size_t)-1, FALSE);
        o_stream_set_flush_callback(conn->output, server_connection_output, conn);
@@ -552,6 +551,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);
 
        o_stream_set_no_error_handling(conn->output, TRUE);
        conn->state = SERVER_REPLY_STATE_DONE;