Expand and fix resend infrastructure
diff --git a/library/ssl_cli.c b/library/ssl_cli.c
index ce14f58..b5dae23 100644
--- a/library/ssl_cli.c
+++ b/library/ssl_cli.c
@@ -1011,6 +1011,8 @@
     ssl->state = SSL_CLIENT_HELLO;
     ssl_reset_checksum( ssl );
 
+    ssl_recv_flight_completed( ssl );
+
     SSL_DEBUG_MSG( 2, ( "<= parse hello verify request" ) );
 
     return( 0 );
@@ -2229,6 +2231,11 @@
 
     ssl->state++;
 
+#if defined(POLARSSL_SSL_PROTO_DTLS)
+    if( ssl->transport == SSL_TRANSPORT_DATAGRAM )
+        ssl_recv_flight_completed( ssl );
+#endif
+
     SSL_DEBUG_MSG( 2, ( "<= parse server hello done" ) );
 
     return( 0 );
@@ -2734,6 +2741,16 @@
     if( ( ret = ssl_flush_output( ssl ) ) != 0 )
         return( ret );
 
+#if defined(POLARSSL_SSL_PROTO_DTLS)
+    if( ssl->transport == SSL_TRANSPORT_DATAGRAM &&
+        ssl->handshake != NULL &&
+        ssl->handshake->retransmit_state == SSL_RETRANS_SENDING )
+    {
+        if( ( ret = ssl_resend( ssl ) ) != 0 )
+            return( ret );
+    }
+#endif
+
     switch( ssl->state )
     {
         case SSL_HELLO_REQUEST: