diff --git a/mongoose.c b/mongoose.c
index c46947113b7d306690f630862dddbb89f3f4967a..fec8a84c76ca022a8e15745a95e342184dca8552 100644
--- a/mongoose.c
+++ b/mongoose.c
@@ -5338,7 +5338,9 @@ MG_INTERNAL size_t mg_handle_chunked(struct mg_connection *nc,
     }
 
     if (zero_chunk_received) {
-      hm->message.len = (size_t) pd->chunk.body_len + blen - i;
+      /* Total message size is len(body) + len(headers) */
+      hm->message.len =
+          (size_t) pd->chunk.body_len + blen - i + (hm->body.p - hm->message.p);
     }
   }