Skip to content

x/net/http2: pseudo header :protocol can not appear after regular header fields #70728

@aojea

Description

@aojea

Found during the implementation of the websockets protocol over http2 on the websocket server https://go-review.googlesource.com/c/net/+/632755

2024/12/08 14:50:29 http2: Transport encoding header ":protocol" = "websocket"
2024/12/08 14:50:29 http2: Framer 0xc0001be460: read SETTINGS flags=ACK len=0
2024/12/08 14:50:29 http2: Transport encoding header "accept-encoding" = "gzip"
2024/12/08 14:50:29 http2: Framer 0xc0001600e0: read SETTINGS flags=ACK len=0
2024/12/08 14:50:29 http2: Transport encoding header "user-agent" = "Go-http-client/2.0"
2024/12/08 14:50:29 http2: Transport received SETTINGS flags=ACK len=0
2024/12/08 14:50:29 http2: Framer 0xc0001600e0: wrote HEADERS flags=END_HEADERS stream=1 len=89
2024/12/08 14:50:29 http2: server read frame SETTINGS flags=ACK len=0
2024/12/08 14:50:29 http2: Framer 0xc0001be460: read HEADERS flags=END_HEADERS stream=1 len=89
2024/12/08 14:50:29 http2: decoded hpack field header field ":authority" = "127.0.0.1:44877"
2024/12/08 14:50:29 http2: decoded hpack field header field ":method" = "CONNECT"
2024/12/08 14:50:29 http2: decoded hpack field header field ":path" = "/echo"
2024/12/08 14:50:29 http2: decoded hpack field header field ":scheme" = "https"
2024/12/08 14:50:29 http2: decoded hpack field header field "sec-websocket-version" = "13"
2024/12/08 14:50:29 http2: decoded hpack field header field ":protocol" = "websocket"
2024/12/08 14:50:29 http2: invalid header: pseudo header field after regular
2024/12/08 14:50:29 http2: Framer 0xc0001be460: wrote RST_STREAM stream=1 len=4 ErrCode=PROTOCOL_ERROR
2024/12/08 14:50:29 http2: Framer 0xc0001600e0: read RST_STREAM stream=1 len=4 ErrCode=PROTOCOL_ERROR
2024/12/08 14:50:29 http2: Transport received RST_STREAM stream=1 len=4 ErrCode=PROTOCOL_ERROR
2024/12/08 14:50:29 http2: Transport closing idle conn 0xc0001621c0 (forSingleUse=false, maxStream=1)
2024/12/08 14:50:29 http2: Transport readFrame error on conn 0xc0001621c0: (*net.OpError) read tcp 127.0.0.1:51842->127.0.0.1:44877: use of closed network connection

/cc @neild

Metadata

Metadata

Assignees

Labels

FixPendingIssues that have a fix which has not yet been reviewed or submitted.NeedsFixThe path to resolution is known, but the work has not been done.release-blocker

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions