Fetch-hulppunt plakt een 502 in een lopend 200-antwoord en laat de verbinding hangen #2755
Labels
No labels
accepted
bug
declined
docs
duplicate
enhancement
good first issue
in-progress
needs-info
privacy
release-blocker
security
triage
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
LibreKAT/Ocideck#2755
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Gevonden in de kritische review van 03-11-2026 (stabiliteit).
Wat er misgaat
Valt de bron weg nadat het fetch-hulppunt de 200 met headers al heeft verstuurd — een reset halverwege, een time-out,
IncompleteRead— dan schrijft_do_geteen tweede, volledig HTTP-antwoord (HTTP/1.1 502 Bad Gateway …) in de body van het lopende antwoord. De verbinding blijft daarna open staan.Hoe gevalideerd
Reproductie met een bron die
Content-Length: 1000aankondigt, 10 bytes stuurt en de verbinding reset. De client ontving letterlijk:en wachtte na 3 seconden nog steeds: de proxy sloot de verbinding niet.
Oorzaak
server/fetch-proxy/ocideck_fetch_proxy.pyr. 335: deexcept (OSError, ssl.SSLError, http.client.HTTPException)roept altijd_refuse(502)aan, ook alssend_response(200)/end_headers()(r. 300–308) al zijn gebeurd.close_connectionwordt niet gezet.Gevolg
Content-Lengthwacht de browser op bytes die nooit komen; de import hangt tot een time-out van de reverse proxy.Voorstel
Bijhouden of de headers al weg zijn. Zo ja: niets meer schrijven,
close_connection = True, zodat de client een afgebroken antwoord ziet. Zo nee: de bestaande 502 blijft.Wat overeind moet blijven
MAX_BYTESen de deadline.Test
Python-zelftoets met een bron die halverwege reset: de proxy sluit de verbinding en schrijft geen tweede statusregel. Rood op de huidige code.
Opgepakt (kritische review 03-11-2026). Tak: fix/proxy-midstream-2755. Verwachte reikwijdte: server/fetch-proxy/ocideck_fetch_proxy.py en zijn zelftoets.