From: Timo Sirainen Date: Fri, 6 Jul 2018 08:25:07 +0000 (+0300) Subject: lib-ssl-iostream: Shutdown connection cleanly whenever i/ostream is destroyed X-Git-Tag: 2.3.2.1~2 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=6c7efd9dd88db9e0417df28cc109716e6d65c457;p=thirdparty%2Fdovecot%2Fcore.git lib-ssl-iostream: Shutdown connection cleanly whenever i/ostream is destroyed Do this while both istream and ostream still exist. Fixes crash where openssl_iostream_destroy() attempts to flush the shutdown, but ssl_input is NULL and it crashes. --- diff --git a/src/lib-ssl-iostream/istream-openssl.c b/src/lib-ssl-iostream/istream-openssl.c index 3bdfdb17cc..d23efd0a99 100644 --- a/src/lib-ssl-iostream/istream-openssl.c +++ b/src/lib-ssl-iostream/istream-openssl.c @@ -23,6 +23,7 @@ static void i_stream_ssl_destroy(struct iostream_private *stream) { struct ssl_istream *sstream = (struct ssl_istream *)stream; + openssl_iostream_shutdown(sstream->ssl_io); i_stream_free_buffer(&sstream->istream); sstream->ssl_io->ssl_input = NULL; ssl_iostream_unref(&sstream->ssl_io); diff --git a/src/lib-ssl-iostream/ostream-openssl.c b/src/lib-ssl-iostream/ostream-openssl.c index e6e8aa5686..d1518bc5d7 100644 --- a/src/lib-ssl-iostream/ostream-openssl.c +++ b/src/lib-ssl-iostream/ostream-openssl.c @@ -26,6 +26,7 @@ static void o_stream_ssl_destroy(struct iostream_private *stream) struct ssl_ostream *sstream = (struct ssl_ostream *)stream; struct istream *ssl_input = sstream->ssl_io->ssl_input; + openssl_iostream_shutdown(sstream->ssl_io); sstream->ssl_io->ssl_output = NULL; i_stream_unref(&ssl_input); ssl_iostream_unref(&sstream->ssl_io);