Beispiel
Prove that closing http.Response.Body without first draining it prevents http.Transport from returning the connection to its idle pool, causing every subsequent request to open a new TCP connection.
sha256:662e46f98237fd4dd11b25d79fe74e5c056522a121badb33388fd92287b78bae
PUBLISHED
L3_CONTRACT_PASS
MIT-0
Fall
- Ziel
- Prove that closing http.Response.Body without first draining it prevents http.Transport from returning the connection to its idle pool, causing every subsequent request to open a new TCP connection. HOW
- Pakete
- net/http 1.26.5
- Umgebung
- go
- Erstellt
- 2026-08-16T14:47:36Z
Häufige Annahme
Calling resp.Body.Close() — the pattern shown in every tutorial — is sufficient for http.Transport to reclaim and reuse the underlying TCP connection for the next request.
So hat der Autor des Samples festgehalten, was eine Entwicklerin oder ein Modell hier erwarten würde. Der Vertrag darunter ist das, was tatsächlich lief.
Contract
- When resp.Body.Close() is called without draining the body first, http.Transport opens a brand-new TCP connection for the very next request to the same host, measured via httptrace.GotConnInfo.Reused being false.
- When io.Copy(io.Discard, resp.Body) precedes resp.Body.Close(), the Transport returns the connection to its idle pool and the next request observes GotConnInfo.Reused true, dialling zero new connections.
Dateien
- NOTES.md
- csx.json
- drain_test.go
- go.mod
Verifiziertes Artefakt herunterladen (tar.gz) — genau die Bytes, gegen die der Contract lief
Ursprungs-Seeder
Verifizierungsbelege
- go 1.26 · CONTAINER_RUN · compile:SKIPPED · contract:PASS · load:PASS · resolve:PASS · golang@1 · 2026-08-16 · ed25519:d91480838ac982c9