Fix issue with non-blocking I/O & record splitting
diff --git a/library/ssl_tls.c b/library/ssl_tls.c
index ac74058..6b9df33 100644
--- a/library/ssl_tls.c
+++ b/library/ssl_tls.c
@@ -4846,19 +4846,16 @@
return( ssl_write_real( ssl, buf, len ) );
}
- if( ssl->split_done != 1 )
+ if( ssl->split_done == 0 )
{
- ssl->split_done = 1;
- if( ( ret = ssl_write_real( ssl, buf, 1 ) ) < 0 )
+ if( ( ret = ssl_write_real( ssl, buf, 1 ) ) <= 0 )
return( ret );
+ ssl->split_done = 1;
}
- if( ssl->split_done == 1 )
- {
- ssl->split_done = 0;
- if( ( ret = ssl_write_real( ssl, buf + 1, len - 1 ) ) < 0 )
- return( ret );
- }
+ if( ( ret = ssl_write_real( ssl, buf + 1, len - 1 ) ) <= 0 )
+ return( ret );
+ ssl->split_done = 0;
return( ret + 1 );
}