Cells: Close Cells pull request body after negotiation

What does this MR do and why?

Contributes to #864 (closed)

Problem

The Cells pull path kept the HTTP request body open until the SSH session ended, even though pull negotiation finishes before the pack transfer. Intermediary client-body timeouts could therefore hang proxied clones after about 60 seconds.

Solution

  • Port the Geo fix from !1537 (merged) to Cells by closing the pull body after done and adding the required trailing flush packet.
  • Reuse the shared pkt-line negotiation reader for Geo and Cells pull requests.
  • Split CellsCommand into focused CellsPullCommand and CellsPushCommand types.
  • Keep Cells push requests as raw stdin streams because their bodies carry the pack data.

References

How to set up and validate locally

  1. Use a Cells-routed repository and clone it over SSH.
  2. Fetch from the same repository over SSH.
  3. Confirm both transfers continue past the intermediary's approximately 60-second idle client-body timeout.
  4. Confirm SSH push continues to stream its raw request body.

Merge request reports

Loading
Loading