Fix client-initiated renegotiation with DTLS
diff --git a/library/ssl_tls.c b/library/ssl_tls.c
index a2539d7..977a5b2 100644
--- a/library/ssl_tls.c
+++ b/library/ssl_tls.c
@@ -2141,7 +2141,8 @@
      * TLS handshake format to other functions.
      */
 #if defined(POLARSSL_SSL_PROTO_DTLS)
-    if( ssl->transport == SSL_TRANSPORT_DATAGRAM )
+    if( ssl->transport == SSL_TRANSPORT_DATAGRAM &&
+        ssl->state != SSL_HANDSHAKE_OVER )
     {
         // TODO: DTLS: check message_seq
 
@@ -2289,11 +2290,13 @@
         return( ret );
     }
 
-#if defined(POLARSSL_SSL_PROTO_DTLS)
     /* Done reading this record, get ready for the next one */
+#if defined(POLARSSL_SSL_PROTO_DTLS)
     if( ssl->transport == SSL_TRANSPORT_DATAGRAM )
         ssl->next_record_offset = ssl->in_msglen + ssl_hdr_len( ssl );
+    else
 #endif
+        ssl->in_left = 0;
 
     SSL_DEBUG_BUF( 4, "input record from network",
                    ssl->in_hdr, ssl_hdr_len( ssl ) + ssl->in_msglen );
@@ -2402,12 +2405,6 @@
         }
     }
 
-    /* With DTLS there might be other records in the same datagram */
-#if defined(POLARSSL_SSL_PROTO_DTLS)
-    if( ssl->transport != SSL_TRANSPORT_DATAGRAM )
-#endif
-    ssl->in_left = 0;
-
     SSL_DEBUG_MSG( 2, ( "<= read record" ) );
 
     return( 0 );