]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
lib-imap-client: Fix IO after enabling SSL
authorTimo Sirainen <timo.sirainen@dovecot.fi>
Thu, 8 Feb 2018 00:28:54 +0000 (02:28 +0200)
committerTimo Sirainen <timo.sirainen@dovecot.fi>
Thu, 15 Feb 2018 10:19:49 +0000 (12:19 +0200)
io_add_istream() needs to be used with the SSL istream, otherwise it can
cause hangs.

src/lib-imap-client/imapc-connection.c

index 6c63ae413d66c02db130825e44d8a44a15a4811a..689c3166e4a40781ae2961ca6cd40ce58c63f28b 100644 (file)
@@ -1657,6 +1657,7 @@ static int imapc_connection_ssl_init(struct imapc_connection *conn)
                conn->output = conn->raw_output;
        }
 
+       io_remove(&conn->io);
        if (io_stream_create_ssl_client(conn->client->ssl_ctx,
                                        conn->client->set.host,
                                        &ssl_set, &conn->input, &conn->output,
@@ -1665,6 +1666,7 @@ static int imapc_connection_ssl_init(struct imapc_connection *conn)
                        conn->name, error);
                return -1;
        }
+       conn->io = io_add_istream(conn->input, imapc_connection_input, conn);
        ssl_iostream_set_handshake_callback(conn->ssl_iostream,
                                            imapc_connection_ssl_handshaked,
                                            conn);