Refactor the immediate transmission feature
The original way or handling it did not cover
message fragmentation or retransmission.
Now, the messages are always appended
to the flight and sent immediately, using
the same function as normal flight
transmission.
Moreover, epoch handling is different for this feature,
with a possibility to perform the usual retransmission
using previous methods.
Signed-off-by: Andrzej Kurek <andrzej.kurek@arm.com>
diff --git a/library/ssl_srv.c b/library/ssl_srv.c
index 389a24e..ce92f98 100644
--- a/library/ssl_srv.c
+++ b/library/ssl_srv.c
@@ -2743,11 +2743,17 @@
}
#if defined(MBEDTLS_SSL_PROTO_DTLS)
- if( MBEDTLS_SSL_TRANSPORT_IS_DTLS( ssl->conf->transport ) &&
- ( ret = mbedtls_ssl_flight_transmit( ssl ) ) != 0 )
+ if( MBEDTLS_SSL_TRANSPORT_IS_DTLS( ssl->conf->transport ) )
{
- MBEDTLS_SSL_DEBUG_RET( 1, "mbedtls_ssl_flight_transmit", ret );
- return( ret );
+#if defined(MBEDTLS_IMMEDIATE_TRANSMISSION)
+ mbedtls_ssl_immediate_flight_done( ssl );
+#else
+ if( ( ret = mbedtls_ssl_flight_transmit( ssl ) ) != 0 )
+ {
+ MBEDTLS_SSL_DEBUG_RET( 1, "mbedtls_ssl_flight_transmit", ret );
+ return( ret );
+ }
+#endif
}
#endif /* MBEDTLS_SSL_PROTO_DTLS */
@@ -3802,11 +3808,17 @@
}
#if defined(MBEDTLS_SSL_PROTO_DTLS)
- if( MBEDTLS_SSL_TRANSPORT_IS_DTLS( ssl->conf->transport ) &&
- ( ret = mbedtls_ssl_flight_transmit( ssl ) ) != 0 )
+ if( MBEDTLS_SSL_TRANSPORT_IS_DTLS( ssl->conf->transport ) )
{
- MBEDTLS_SSL_DEBUG_RET( 1, "mbedtls_ssl_flight_transmit", ret );
- return( ret );
+#if defined(MBEDTLS_IMMEDIATE_TRANSMISSION)
+ mbedtls_ssl_immediate_flight_done( ssl );
+#else
+ if( ( ret = mbedtls_ssl_flight_transmit( ssl ) ) != 0 )
+ {
+ MBEDTLS_SSL_DEBUG_RET( 1, "mbedtls_ssl_flight_transmit", ret );
+ return( ret );
+ }
+#endif
}
#endif /* MBEDTLS_SSL_PROTO_DTLS */