golang / go

The Go programming language
https://go.dev
BSD 3-Clause "New" or "Revised" License
123.66k stars 17.62k forks source link

x/net/http2: discrepancies in lost PING handling between Server and Transport #69963

Open mmatczuk opened 1 day ago

mmatczuk commented 1 day ago

Go version

x/net v0.30.0

Output of go env in your module/workspace:

Not important.

What did you do?

I configured http2.Server with

and caused PING to be lost.

What did you see happen?

The newly added support for lost PING in server:

if sc.pingSent {
    sc.vlogf("timeout waiting for PING response")
    sc.conn.Close()
    return
}

https://cs.opensource.google/go/x/net/+/refs/tags/v0.30.0:http2/server.go;l=1047

vs

func (cc *ClientConn) closeForLostPing() {
    err := errors.New("http2: client connection lost")
    if f := cc.t.CountError; f != nil {
        f("conn_close_lost_ping")
    }
    cc.closeForError(err)
}

https://cs.opensource.google/go/x/net/+/refs/tags/v0.30.0:http2/transport.go;l=1159

What did you expect to see?

I expect to see

gabyhelp commented 1 day ago

Related Issues and Documentation

(Emoji vote if this was helpful or unhelpful; more detailed feedback welcome in this discussion.)