Bug Fixes
-
receive early HTTP fetch packs with
no-doneSmart HTTP can finish negotiation before the client has exhausted its
havelist. Withno-done, Git sendsACK ... ready,NAK, a final
ACK, and the pack in the same response. Treating thatNAKas the end
of the response starts another request while reqwest is still sending
the previous body, deadlocking both threads.Pass the negotiated
no-donecapability to the existing response parser
so it keeps reading afterready. Preserve the extradoneround when
the capability is absent. Before starting another HTTP request, reject
unconsumed response-body bytes so a protocol-layer mistake produces an
error instead of blocking the worker. Expose the underlying packet-line
reader for this HTTP body check.The fetch regression fails before the fix by performing two negotiation
rounds instead of one. It uses the existing Git response fixture and
also checks the case withoutno-done. The reqwest regression leaves a
large response unread and fails with a bounded timeout before the fix.Git reference:
6de20f6092dcf9bdb1c8efe03db4b70c82b423dd
(v2.56.0-116-g6de20f6092),upload-pack.c:get_common_commits()and
fetch-pack.c:find_common().t/t5539-fetch-http-shallow.shalso checks
that the client receivesreadywithout sendingdone.
Commit Statistics
- 5 commits contributed to the release over the course of 14 calendar days.
- 14 days passed between releases.
- 1 commit was understood as conventional.
- 1 unique issue was worked on: #3073