Skip to content

net/http: Transport should always verify we wrote the request #7569

Closed
@bradfitz

Description

@bradfitz
While debugging something else, I noticed:

https://golang.org/issue/7521?c=2

in transport.go's

func (pc *persistConn) roundTrip(req *transportRequest) (resp *Response, err error) {

... we only check the return value of Request.Write in the case where it happens before
the server replies. If the server writes half of it, pauses for a moment, and then the
server replies with a valid happy response, we respond successfully, even if the write
subsequently then fails.

Bigger fear: could we then mark a persistConn as idle before it's finished writing and
enqueue a second write behind it, even if the first one is blocked or will fail?

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions