Merge remote-tracking branch 'upstream-public/pr/2181' into development
diff --git a/library/ssl_tls.c b/library/ssl_tls.c
index c64036c..38690fa 100644
--- a/library/ssl_tls.c
+++ b/library/ssl_tls.c
@@ -3201,8 +3201,10 @@
}
}
- if( ssl->out_msgtype == MBEDTLS_SSL_MSG_HANDSHAKE &&
- hs_type != MBEDTLS_SSL_HS_HELLO_REQUEST &&
+ /* Whenever we send anything different from a
+ * HelloRequest we should be in a handshake - double check. */
+ if( ! ( ssl->out_msgtype == MBEDTLS_SSL_MSG_HANDSHAKE &&
+ hs_type == MBEDTLS_SSL_HS_HELLO_REQUEST ) &&
ssl->handshake == NULL )
{
MBEDTLS_SSL_DEBUG_MSG( 1, ( "should never happen" ) );
@@ -3296,8 +3298,8 @@
/* Either send now, or just save to be sent (and resent) later */
#if defined(MBEDTLS_SSL_PROTO_DTLS)
if( ssl->conf->transport == MBEDTLS_SSL_TRANSPORT_DATAGRAM &&
- ( ssl->out_msgtype != MBEDTLS_SSL_MSG_HANDSHAKE ||
- hs_type != MBEDTLS_SSL_HS_HELLO_REQUEST ) )
+ ! ( ssl->out_msgtype == MBEDTLS_SSL_MSG_HANDSHAKE &&
+ hs_type == MBEDTLS_SSL_HS_HELLO_REQUEST ) )
{
if( ( ret = ssl_flight_append( ssl ) ) != 0 )
{