diff --git a/library/ssl_tls.c b/library/ssl_tls.c
index b8946cd..08b26b3 100644
--- a/library/ssl_tls.c
+++ b/library/ssl_tls.c
@@ -2408,22 +2408,6 @@
     }
 #endif
 
-    /*
-     * For DTLS, we move data so that is looks like TLS handshake format to
-     * other functions.
-     * Except on server after the initial handshake (wait until after
-     * update_checksum() in ssl_parse_client_hello()).
-     */
-#if defined(POLARSSL_SSL_PROTO_DTLS)
-    if( ssl->transport == SSL_TRANSPORT_DATAGRAM &&
-        ! ( ssl->endpoint == SSL_IS_SERVER &&
-            ssl->state == SSL_HANDSHAKE_OVER ) )
-    {
-        memmove( ssl->in_msg + 4, ssl->in_msg + 12, ssl->in_hslen - 12 );
-        ssl->in_hslen -= 8;
-    }
-#endif /* POLARSSL_SSL_PROTO_DTLS */
-
     return( 0 );
 }
 
@@ -2625,16 +2609,8 @@
 
     SSL_DEBUG_MSG( 2, ( "=> read record" ) );
 
-    /*
-     * With DTLS, we cheated on in_hslen to make the handshake message look
-     * like TLS format, restore the truth now
-     */
-#if defined(POLARSSL_SSL_PROTO_DTLS)
-    if( ssl->in_hslen != 0 && ssl->transport == SSL_TRANSPORT_DATAGRAM )
-        ssl->in_hslen += 8;
-#endif
-
-    if( ssl->in_hslen != 0 && ssl->in_hslen < ssl->in_msglen )
+    /* Temporarily disabled */
+    if( ( 0 ) && ssl->in_hslen != 0 && ssl->in_hslen < ssl->in_msglen )
     {
         /*
          * Get next Handshake message in the current record
@@ -3001,6 +2977,8 @@
         return( ret );
     }
 
+    ssl_hs_rm_dtls_hdr( ssl );
+
     ssl->state++;
 
 #if defined(POLARSSL_SSL_PROTO_SSL3)
@@ -3813,6 +3791,8 @@
         return( ret );
     }
 
+    ssl_hs_rm_dtls_hdr( ssl );
+
     if( ssl->in_msgtype != SSL_MSG_HANDSHAKE )
     {
         SSL_DEBUG_MSG( 1, ( "bad finished message" ) );
@@ -5041,7 +5021,7 @@
 
             if( ssl->endpoint == SSL_IS_CLIENT &&
                 ( ssl->in_msg[0] != SSL_HS_HELLO_REQUEST ||
-                  ssl->in_hslen != 4 ) )
+                  ssl->in_hslen != ssl_hs_hdr_len( ssl ) ) )
             {
                 SSL_DEBUG_MSG( 1, ( "handshake received (not HelloRequest)" ) );
 
