readHeader decodes headers to big endian
(r io.Reader)
| 329 | |
| 330 | // readHeader decodes headers to big endian |
| 331 | func readHeader(r io.Reader) (string, error) { |
| 332 | b := make([]byte, 4) |
| 333 | if _, err := io.ReadFull(r, b); err != nil { |
| 334 | return "", fmt.Errorf("cannot read header length: %w", err) |
| 335 | } |
| 336 | n := uint32(b[3]) | (uint32(b[2]) << 8) | (uint32(b[1]) << 16) | (uint32(b[0]) << 24) |
| 337 | s := make([]byte, n) |
| 338 | if _, err := io.ReadFull(r, s); err != nil { |
| 339 | return "", fmt.Errorf("cannot read header value with length %d: %w", n, err) |
| 340 | } |
| 341 | return string(s), nil |
| 342 | } |
no outgoing calls