From 3200480ecfa763bc2b0f1260cb022fceee4661f5 Mon Sep 17 00:00:00 2001 From: Stephan Bosch Date: Wed, 23 Sep 2020 23:58:12 +0200 Subject: [PATCH] lib-ssl-iostream: iostream-openssl - Move error handling out of openssl_iostream_bio_output(). Makes the next commit clearer. --- src/lib-ssl-iostream/iostream-openssl.c | 26 +++++++++++++++++-------- 1 file changed, 18 insertions(+), 8 deletions(-) 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, -- 2.47.3