github GitoxideLabs/gitoxide gix-protocol-v0.68.0
gix-protocol v0.68.0

7 hours ago

Bug Fixes

  • receive early HTTP fetch packs with no-done

    Smart HTTP can finish negotiation before the client has exhausted its
    have list. With no-done, Git sends ACK ... ready, NAK, a final
    ACK, and the pack in the same response. Treating that NAK as the end
    of the response starts another request while reqwest is still sending
    the previous body, deadlocking both threads.

    Pass the negotiated no-done capability to the existing response parser
    so it keeps reading after ready. Preserve the extra done round 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 without no-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.sh also checks
    that the client receives ready without sending done.

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

Commit Details

view details
  • #3073
    • Receive early HTTP fetch packs with no-done (de997d9)
  • Uncategorized
    • Merge pull request #3075 from GitoxideLabs/fix-fetch (ba55049)
    • Merge pull request #3053 from GitoxideLabs/various-improvements (2d8dcc4)
    • Release gix-error v0.5.1, gix-utils v0.5.1 (6d1b686)
    • Merge pull request #3048 from GitoxideLabs/new-release (5fccccf)

Don't miss a new gitoxide release

NewReleases is sending notifications on new releases.