{"record":{"id":"a64003e69aaea87d","repo":"router-for-me/CLIProxyAPI","slug":"httpwire-chunk-data-is-missing-crlf-terminator","errorCode":null,"errorMessage":"httpwire: chunk data is missing CRLF terminator","messagePattern":"httpwire: chunk data is missing CRLF terminator","errorType":"http","errorClass":null,"httpStatus":null,"severity":"error","filePath":"internal/httpwire/ordered_conn.go","lineNumber":258,"sourceCode":"\t\t\ttracker.line = tracker.line[:0]\n\t\t\tif size == 0 {\n\t\t\t\ttracker.state = chunkedReadingTrailers\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\ttracker.dataRemaining = size\n\t\t\ttracker.state = chunkedReadingData\n\t\tcase chunkedReadingData:\n\t\t\tchunkBytes := min(int64(len(data)-consumed), tracker.dataRemaining)\n\t\t\tconsumed += int(chunkBytes)\n\t\t\ttracker.dataRemaining -= chunkBytes\n\t\t\tif tracker.dataRemaining == 0 {\n\t\t\t\ttracker.crlfPosition = 0\n\t\t\t\ttracker.state = chunkedReadingDataCRLF\n\t\t\t}\n\t\tcase chunkedReadingDataCRLF:\n\t\t\twant := []byte(\"\\r\\n\")\n\t\t\tif data[consumed] != want[tracker.crlfPosition] {\n\t\t\t\treturn consumed, false, fmt.Errorf(\"httpwire: chunk data is missing CRLF terminator\")\n\t\t\t}\n\t\t\tconsumed++\n\t\t\ttracker.crlfPosition++\n\t\t\tif tracker.crlfPosition == len(want) {\n\t\t\t\ttracker.state = chunkedReadingSize\n\t\t\t}\n\t\tcase chunkedReadingTrailers:\n\t\t\ttracker.trailers = append(tracker.trailers, data[consumed])\n\t\t\tconsumed++\n\t\t\tif len(tracker.trailers) > maxBufferedRequestHeader {\n\t\t\t\treturn consumed, false, fmt.Errorf(\"httpwire: chunk trailers exceed %d bytes\", maxBufferedRequestHeader)\n\t\t\t}\n\t\t\tif bytes.Equal(tracker.trailers, []byte(\"\\r\\n\")) ||\n\t\t\t\t(len(tracker.trailers) >= 4 && bytes.Equal(tracker.trailers[len(tracker.trailers)-4:], []byte(\"\\r\\n\\r\\n\"))) {\n\t\t\t\treturn consumed, true, nil\n\t\t\t}\n\t\tdefault:\n\t\t\treturn consumed, false, fmt.Errorf(\"httpwire: invalid chunk parser state %d\", tracker.state)","sourceCodeStart":240,"sourceCodeEnd":276,"githubUrl":"https://github.com/router-for-me/CLIProxyAPI/blob/78f0c4079e3e6273d65d03b5549cffc898703264/internal/httpwire/ordered_conn.go#L240-L276","documentation":"Error \"httpwire: chunk data is missing CRLF terminator\" thrown in router-for-me/CLIProxyAPI.","triggerScenarios":"Thrown at internal/httpwire/ordered_conn.go:258 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Verify the peer terminates each chunk with CRLF per HTTP chunked encoding.","Close the connection to the misbehaving peer."],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"78f0c4079e3e6273d65d03b5549cffc898703264","analyzedAt":"2026-08-15T12:26:37.444Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}