diff --git a/library/ssl_tls13_client.c b/library/ssl_tls13_client.c
index 586440a..0b243f4 100644
--- a/library/ssl_tls13_client.c
+++ b/library/ssl_tls13_client.c
@@ -1947,12 +1947,12 @@
 
     session->ticket_lifetime = MBEDTLS_GET_UINT32_BE( p, 0 );
     MBEDTLS_SSL_DEBUG_MSG( 3,
-                           ( "ticket->lifetime: %u",
+                           ( "ticket_lifetime: %u",
                              ( unsigned int )session->ticket_lifetime ) );
 
     session->ticket_age_add = MBEDTLS_GET_UINT32_BE( p, 4 );
     MBEDTLS_SSL_DEBUG_MSG( 3,
-                           ( "ticket->ticket_age_add: %u",
+                           ( "ticket_age_add: %u",
                              ( unsigned int )session->ticket_age_add ) );
 
     *ticket_nonce_len = p[8];
@@ -1987,16 +1987,15 @@
     p += ticket_len;
     session->ticket = ticket;
     session->ticket_len = ticket_len;
-    MBEDTLS_SSL_DEBUG_BUF( 4, "stored ticket", ticket, ticket_len );
 
     MBEDTLS_SSL_CHK_BUF_READ_PTR( p, end, 2 );
     extensions_len = MBEDTLS_GET_UINT16_BE( p, 0 );
     p += 2;
     MBEDTLS_SSL_CHK_BUF_READ_PTR( p, end, extensions_len );
 
-    MBEDTLS_SSL_DEBUG_BUF( 3, "ticket->extension", p, extensions_len );
+    MBEDTLS_SSL_DEBUG_BUF( 3, "ticket extension", p, extensions_len );
 
-    ret = ssl_tls13_parse_new_session_ticket_exts( ssl, p, end );
+    ret = ssl_tls13_parse_new_session_ticket_exts( ssl, p, p + extensions_len );
     if( ret != 0 )
     {
         MBEDTLS_SSL_DEBUG_RET( 1,
@@ -2004,12 +2003,6 @@
                                ret );
         return( ret );
     }
-    p += extensions_len;
-
-#if defined(MBEDTLS_HAVE_TIME)
-    /* Store ticket creation time */
-    session->ticket_received = time( NULL );
-#endif
 
     return( 0 );
 }
@@ -2024,12 +2017,11 @@
     psa_algorithm_t psa_hash_alg;
     int hash_length;
 
-    /* Compute PSK based on received nonce and resumption_master_secret
-     * in the following style:
-     *
-     *  HKDF-Expand-Label( resumption_master_secret,
-     *                    "resumption", ticket_nonce, Hash.length )
-     */
+#if defined(MBEDTLS_HAVE_TIME)
+    /* Store ticket creation time */
+    session->ticket_received = time( NULL );
+#endif
+
     ciphersuite_info = mbedtls_ssl_ciphersuite_from_id( session->ciphersuite );
     if( ciphersuite_info == NULL )
     {
@@ -2046,7 +2038,7 @@
                            session->app_secrets.resumption_master_secret,
                            hash_length );
 
-    /* Computer resumption key
+    /* Compute resumption key
      *
      *  HKDF-Expand-Label( resumption_master_secret,
      *                    "resumption", ticket_nonce, Hash.length )
@@ -2075,7 +2067,6 @@
                            session->key,
                            session->key_len );
 
-    mbedtls_ssl_handshake_set_state( ssl, MBEDTLS_SSL_HANDSHAKE_OVER );
     return( 0 );
 }
 
@@ -2103,6 +2094,8 @@
     MBEDTLS_SSL_PROC_CHK( ssl_tls13_postprocess_new_session_ticket(
                               ssl, ticket_nonce, ticket_nonce_len ) );
 
+    mbedtls_ssl_handshake_set_state( ssl, MBEDTLS_SSL_HANDSHAKE_OVER );
+
 cleanup:
 
     MBEDTLS_SSL_DEBUG_MSG( 2, ( "<= parse new session ticket" ) );
