const maxLineLength … var ErrLineTooLong … // NewChunkedReader returns a new chunkedReader that translates the data read from r // out of HTTP "chunked" format before returning it. // The chunkedReader returns [io.EOF] when the final 0-length chunk is read. // // NewChunkedReader is not needed by normal applications. The http package // automatically decodes chunking when reading response bodies. func NewChunkedReader(r io.Reader) io.Reader { … } type chunkedReader … func (cr *chunkedReader) beginChunk() { … } func (cr *chunkedReader) chunkHeaderAvailable() bool { … } func (cr *chunkedReader) Read(b []uint8) (n int, err error) { … } // Read a line of bytes (up to \n) from b. // Give up if the line exceeds maxLineLength. // The returned bytes are owned by the bufio.Reader // so they are only valid until the next bufio read. func readChunkLine(b *bufio.Reader) ([]byte, error) { … } func trimTrailingWhitespace(b []byte) []byte { … } func isASCIISpace(b byte) bool { … } var semi … // removeChunkExtension removes any chunk-extension from p. // For example, // // "0" => "0" // "0;token" => "0" // "0;token=val" => "0" // `0;token="quoted string"` => "0" func removeChunkExtension(p []byte) ([]byte, error) { … } // NewChunkedWriter returns a new chunkedWriter that translates writes into HTTP // "chunked" format before writing them to w. Closing the returned chunkedWriter // sends the final 0-length chunk that marks the end of the stream but does // not send the final CRLF that appears after trailers; trailers and the last // CRLF must be written separately. // // NewChunkedWriter is not needed by normal applications. The http // package adds chunking automatically if handlers don't set a // Content-Length header. Using newChunkedWriter inside a handler // would result in double chunking or chunking with a Content-Length // length, both of which are wrong. func NewChunkedWriter(w io.Writer) io.WriteCloser { … } type chunkedWriter … // Write the contents of data as one chunk to Wire. // NOTE: Note that the corresponding chunk-writing procedure in Conn.Write has // a bug since it does not check for success of [io.WriteString] func (cw *chunkedWriter) Write(data []byte) (n int, err error) { … } func (cw *chunkedWriter) Close() error { … } type FlushAfterChunkWriter … func parseHexUint(v []byte) (n uint64, err error) { … }