From: Stephan Bosch Date: Wed, 23 Sep 2020 21:58:12 +0000 (+0200) Subject: lib-ssl-iostream: iostream-openssl - Move error handling out of openssl_iostream_bio_... X-Git-Tag: 2.3.18~280 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=3200480ecfa763bc2b0f1260cb022fceee4661f5;p=thirdparty%2Fdovecot%2Fcore.git lib-ssl-iostream: iostream-openssl - Move error handling out of openssl_iostream_bio_output(). Makes the next commit clearer. --- diff --git a/src/lib-ssl-iostream/iostream-openssl.c b/src/lib-ssl-iostream/iostream-openssl.c index 469cbc9ace..b3a426f8a4 100644 --- a/src/lib-ssl-iostream/iostream-openssl.c +++ b/src/lib-ssl-iostream/iostream-openssl.c @@ -389,7 +389,7 @@ static void openssl_iostream_destroy(struct ssl_iostream *ssl_io) ssl_iostream_unref(&ssl_io); } -static int openssl_iostream_bio_output(struct ssl_iostream *ssl_io) +static int openssl_iostream_bio_output_real(struct ssl_iostream *ssl_io) { size_t bytes, max_bytes; ssize_t sent; @@ -424,13 +424,6 @@ static int openssl_iostream_bio_output(struct ssl_iostream *ssl_io) fully succeed or completely fail due to some error. */ sent = o_stream_send(ssl_io->plain_output, buffer, bytes); if (sent < 0) { - i_assert(ssl_io->plain_output->stream_errno != 0); - i_free(ssl_io->plain_stream_errstr); - ssl_io->plain_stream_errstr = - i_strdup(o_stream_get_error(ssl_io->plain_output)); - ssl_io->plain_stream_errno = - ssl_io->plain_output->stream_errno; - ssl_io->closed = TRUE; result = -1; break; } @@ -441,6 +434,23 @@ static int openssl_iostream_bio_output(struct ssl_iostream *ssl_io) return result; } +static int openssl_iostream_bio_output(struct ssl_iostream *ssl_io) +{ + int ret; + + ret = openssl_iostream_bio_output_real(ssl_io); + if (ret < 0) { + i_assert(ssl_io->plain_output->stream_errno != 0); + i_free(ssl_io->plain_stream_errstr); + ssl_io->plain_stream_errstr = + i_strdup(o_stream_get_error(ssl_io->plain_output)); + ssl_io->plain_stream_errno = + ssl_io->plain_output->stream_errno; + ssl_io->closed = TRUE; + } + return ret; +} + static ssize_t openssl_iostream_read_more(struct ssl_iostream *ssl_io, enum openssl_iostream_sync_type type, size_t wanted,