-
Notifications
You must be signed in to change notification settings - Fork 18.4k
net/http: reuse connection if entire unread body is in buffer #75303
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: master
Are you sure you want to change the base?
Conversation
This PR (HEAD: a25a189) has been imported to Gerrit for code review. Please visit Gerrit at https://go-review.googlesource.com/c/go/+/701555. Important tips:
|
Message from Gopher Robot: Patch Set 1: (1 comment) Please don’t reply on this GitHub thread. Visit golang.org/cl/701555. |
Message from Gopher Robot: Patch Set 1: Congratulations on opening your first change. Thank you for your contribution! Next steps: Most changes in the Go project go through a few rounds of revision. This can be During May-July and Nov-Jan the Go project is in a code freeze, during which Please don’t reply on this GitHub thread. Visit golang.org/cl/701555. |
Message from t hepudds: Patch Set 2: (1 comment) Please don’t reply on this GitHub thread. Visit golang.org/cl/701555. |
Message from Theo Martin: Patch Set 2: Code-Review+1 (2 comments) Please don’t reply on this GitHub thread. Visit golang.org/cl/701555. |
Message from yihong cao: Patch Set 3: (2 comments) Please don’t reply on this GitHub thread. Visit golang.org/cl/701555. |
Currently, if an http response body is closed before fully read (fully means till EOF),
the underlying HTTP connection won't be reused. But in the current implementation,
body is first read into
bufio
buffer bybufio
reader, then from buffer by bodyReader
.So even if the body is closed before fully read, as long as the entire body has been
read into buffer, after discard buffer, the connection can be reused.
Fixes #75309
This will be useful when go client only read body if status is 200 while server sends
HTTP body in a non 200 status response.