diff --git a/library/ssl_msg.c b/library/ssl_msg.c
index 6cd0f41..b63533d 100644
--- a/library/ssl_msg.c
+++ b/library/ssl_msg.c
@@ -3324,40 +3324,19 @@
         const size_t hs_this_fragment_len =
             ssl->in_msglen > hs_remain ? hs_remain : ssl->in_msglen;
 
-        if (ssl->badmac_seen_or_in_hsfraglen != 0) {
-            /* We already had a handshake fragment. Prepare to append
-             * to the initial segment. */
-            MBEDTLS_SSL_DEBUG_MSG(3,
-                                  ("subsequent handshake fragment: %" MBEDTLS_PRINTF_SIZET
-                                   ", %u..%u of %" MBEDTLS_PRINTF_SIZET,
-                                   ssl->in_msglen,
-                                   ssl->badmac_seen_or_in_hsfraglen,
-                                   ssl->badmac_seen_or_in_hsfraglen +
-                                   (unsigned) hs_this_fragment_len,
-                                   ssl->in_hslen));
-        } else if (hs_this_fragment_len == ssl->in_hslen) {
-            /* This is the sole fragment. */
-            /* Emit a log message in the same format as when there are
-             * multiple fragments, for ease of matching. */
-            MBEDTLS_SSL_DEBUG_MSG(3,
-                                  ("sole handshake fragment: %" MBEDTLS_PRINTF_SIZET
-                                   ", %u..%u of %" MBEDTLS_PRINTF_SIZET,
-                                   ssl->in_msglen,
-                                   ssl->badmac_seen_or_in_hsfraglen,
-                                   ssl->badmac_seen_or_in_hsfraglen +
-                                   (unsigned) hs_this_fragment_len,
-                                   ssl->in_hslen));
-        } else {
-            /* This is the first fragment of many. */
-            MBEDTLS_SSL_DEBUG_MSG(3,
-                                  ("initial handshake fragment: %" MBEDTLS_PRINTF_SIZET
-                                   ", %u..%u of %" MBEDTLS_PRINTF_SIZET,
-                                   ssl->in_msglen,
-                                   ssl->badmac_seen_or_in_hsfraglen,
-                                   ssl->badmac_seen_or_in_hsfraglen +
-                                   (unsigned) hs_this_fragment_len,
-                                   ssl->in_hslen));
-        }
+        MBEDTLS_SSL_DEBUG_MSG(3,
+                              ("%s handshake fragment: %" MBEDTLS_PRINTF_SIZET
+                               ", %u..%u of %" MBEDTLS_PRINTF_SIZET,
+                               (ssl->badmac_seen_or_in_hsfraglen != 0 ?
+                                "subsequent" :
+                                hs_this_fragment_len == ssl->in_hslen ?
+                                "sole" :
+                                "initial"),
+                               ssl->in_msglen,
+                               ssl->badmac_seen_or_in_hsfraglen,
+                               ssl->badmac_seen_or_in_hsfraglen +
+                               (unsigned) hs_this_fragment_len,
+                               ssl->in_hslen));
 
         /* Move the received handshake fragment to have the whole message
          * (at least the part received so far) in a single segment at a
