The data chunk sizes add to the decoded body length.

highlighted = computed this step

Two data chunks add up

The first data chunk contributes 2 bytes.

first chunk bytes=2\text{first chunk bytes}=2
Chunk sizesThe chunk sizes, decoded body, and terminator checks are recomputed from pinned response bytes.Chunk sizes - GET /stream chunks decode to hi! (3 bytes)sectionnamevaluecheckrequest linemethodGETparsedrequest linepath/streamparsedrequest lineversionHTTP/1.1parsedheaderHostapi.exampleexactstatusversionHTTP/1.1parsedstatusstatus200 OKokheaderTransfer-EncodingchunkedchunkedheaderContent-Lengthabsentnot usedchunk 1size token2hex sizechunk 1decimal size2convertedchunk 1data displayhisafe display formchunk 1data hex6869pinned byteschunk 1roledatastream partchunk 2size token1hex sizechunk 2decimal size1convertedchunk 2data displayexclamation marksafe display formchunk 2data hex21pinned byteschunk 2roledatastream partchunk 3size token0hex sizechunk 3decimal size0convertedchunk 3data displayend markersafe display formchunk 3data hexno datapinned byteschunk 3roleendstream partdecoded bodydisplayhi!safe display formdecoded bodyexact hex686921pinned bytesdecoded bodybyte length3countedcheckfirst chunk bytes2chunk sizechecksecond chunk bytes1chunk sizecheckdecoded body bytes3sumcheckzero chunk endsyesterminatorcheckContent-Lengthabsentabsent

The second data chunk adds one more byte

The second data chunk contributes 1 byte.

second chunk bytes=1\text{second chunk bytes}=1
Chunk sizesThe chunk sizes, decoded body, and terminator checks are recomputed from pinned response bytes.Chunk sizes - GET /stream chunks decode to hi! (3 bytes)sectionnamevaluecheckrequest linemethodGETparsedrequest linepath/streamparsedrequest lineversionHTTP/1.1parsedheaderHostapi.exampleexactstatusversionHTTP/1.1parsedstatusstatus200 OKokheaderTransfer-EncodingchunkedchunkedheaderContent-Lengthabsentnot usedchunk 1size token2hex sizechunk 1decimal size2convertedchunk 1data displayhisafe display formchunk 1data hex6869pinned byteschunk 1roledatastream partchunk 2size token1hex sizechunk 2decimal size1convertedchunk 2data displayexclamation marksafe display formchunk 2data hex21pinned byteschunk 2roledatastream partchunk 3size token0hex sizechunk 3decimal size0convertedchunk 3data displayend markersafe display formchunk 3data hexno datapinned byteschunk 3roleendstream partdecoded bodydisplayhi!safe display formdecoded bodyexact hex686921pinned bytesdecoded bodybyte length3countedcheckfirst chunk bytes2chunk sizechecksecond chunk bytes1chunk sizecheckdecoded body bytes3sumcheckzero chunk endsyesterminatorcheckContent-Lengthabsentabsent

The decoded body length is counted

The two data chunk sizes add to 3 body bytes.

2+1=32+1=3
Chunk sizesThe chunk sizes, decoded body, and terminator checks are recomputed from pinned response bytes.Chunk sizes - GET /stream chunks decode to hi! (3 bytes)sectionnamevaluecheckrequest linemethodGETparsedrequest linepath/streamparsedrequest lineversionHTTP/1.1parsedheaderHostapi.exampleexactstatusversionHTTP/1.1parsedstatusstatus200 OKokheaderTransfer-EncodingchunkedchunkedheaderContent-Lengthabsentnot usedchunk 1size token2hex sizechunk 1decimal size2convertedchunk 1data displayhisafe display formchunk 1data hex6869pinned byteschunk 1roledatastream partchunk 2size token1hex sizechunk 2decimal size1convertedchunk 2data displayexclamation marksafe display formchunk 2data hex21pinned byteschunk 2roledatastream partchunk 3size token0hex sizechunk 3decimal size0convertedchunk 3data displayend markersafe display formchunk 3data hexno datapinned byteschunk 3roleendstream partdecoded bodydisplayhi!safe display formdecoded bodyexact hex686921pinned bytesdecoded bodybyte length3countedcheckfirst chunk bytes2chunk sizechecksecond chunk bytes1chunk sizecheckdecoded body bytes3sumcheckzero chunk endsyesterminatorcheckContent-Lengthabsentabsent

Summary

Chunked transfer counts body bytes from the chunk size lines.

chunk sizes checked\text{chunk sizes checked}
Chunk sizesThe chunk sizes, decoded body, and terminator checks are recomputed from pinned response bytes.Chunk sizes - GET /stream chunks decode to hi! (3 bytes)sectionnamevaluecheckrequest linemethodGETparsedrequest linepath/streamparsedrequest lineversionHTTP/1.1parsedheaderHostapi.exampleexactstatusversionHTTP/1.1parsedstatusstatus200 OKokheaderTransfer-EncodingchunkedchunkedheaderContent-Lengthabsentnot usedchunk 1size token2hex sizechunk 1decimal size2convertedchunk 1data displayhisafe display formchunk 1data hex6869pinned byteschunk 1roledatastream partchunk 2size token1hex sizechunk 2decimal size1convertedchunk 2data displayexclamation marksafe display formchunk 2data hex21pinned byteschunk 2roledatastream partchunk 3size token0hex sizechunk 3decimal size0convertedchunk 3data displayend markersafe display formchunk 3data hexno datapinned byteschunk 3roleendstream partdecoded bodydisplayhi!safe display formdecoded bodyexact hex686921pinned bytesdecoded bodybyte length3countedcheckfirst chunk bytes2chunk sizechecksecond chunk bytes1chunk sizecheckdecoded body bytes3sumcheckzero chunk endsyesterminatorcheckContent-Lengthabsentabsent