router-for-me/CLIProxyAPI · error

httpwire: chunk data is missing CRLF terminator

Error message

httpwire: chunk data is missing CRLF terminator

What it means

Error "httpwire: chunk data is missing CRLF terminator" thrown in router-for-me/CLIProxyAPI.

Source

Thrown at internal/httpwire/ordered_conn.go:258

			tracker.line = tracker.line[:0]
			if size == 0 {
				tracker.state = chunkedReadingTrailers
				continue
			}
			tracker.dataRemaining = size
			tracker.state = chunkedReadingData
		case chunkedReadingData:
			chunkBytes := min(int64(len(data)-consumed), tracker.dataRemaining)
			consumed += int(chunkBytes)
			tracker.dataRemaining -= chunkBytes
			if tracker.dataRemaining == 0 {
				tracker.crlfPosition = 0
				tracker.state = chunkedReadingDataCRLF
			}
		case chunkedReadingDataCRLF:
			want := []byte("\r\n")
			if data[consumed] != want[tracker.crlfPosition] {
				return consumed, false, fmt.Errorf("httpwire: chunk data is missing CRLF terminator")
			}
			consumed++
			tracker.crlfPosition++
			if tracker.crlfPosition == len(want) {
				tracker.state = chunkedReadingSize
			}
		case chunkedReadingTrailers:
			tracker.trailers = append(tracker.trailers, data[consumed])
			consumed++
			if len(tracker.trailers) > maxBufferedRequestHeader {
				return consumed, false, fmt.Errorf("httpwire: chunk trailers exceed %d bytes", maxBufferedRequestHeader)
			}
			if bytes.Equal(tracker.trailers, []byte("\r\n")) ||
				(len(tracker.trailers) >= 4 && bytes.Equal(tracker.trailers[len(tracker.trailers)-4:], []byte("\r\n\r\n"))) {
				return consumed, true, nil
			}
		default:
			return consumed, false, fmt.Errorf("httpwire: invalid chunk parser state %d", tracker.state)

View on GitHub (pinned to 78f0c4079e)

Solutions

  1. Verify the peer terminates each chunk with CRLF per HTTP chunked encoding.
  2. Close the connection to the misbehaving peer.

When it happens

Trigger: Thrown at internal/httpwire/ordered_conn.go:258 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of router-for-me/CLIProxyAPI@78f0c4079e (2026-08-15). Data as JSON: /api/errors/a64003e69aaea87d. Report an issue: GitHub.