Fix ssl_close_notify() with non-blocking I/O
diff --git a/library/ssl_tls.c b/library/ssl_tls.c
index 103dc1f..d8eddd9 100644
--- a/library/ssl_tls.c
+++ b/library/ssl_tls.c
@@ -4018,11 +4018,8 @@
SSL_DEBUG_MSG( 2, ( "=> write close notify" ) );
- if( ( ret = ssl_flush_output( ssl ) ) != 0 )
- {
- SSL_DEBUG_RET( 1, "ssl_flush_output", ret );
- return( ret );
- }
+ if( ssl->out_left != 0 )
+ return( ssl_flush_output( ssl ) );
if( ssl->state == SSL_HANDSHAKE_OVER )
{
@@ -4036,7 +4033,7 @@
SSL_DEBUG_MSG( 2, ( "<= write close notify" ) );
- return( ret );
+ return( 0 );
}
void ssl_transform_free( ssl_transform *transform )