Loading
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
doneand adding the required trailing flush packet. - Reuse the shared pkt-line negotiation reader for Geo and Cells pull requests.
- Split
CellsCommandinto focusedCellsPullCommandandCellsPushCommandtypes. - Keep Cells push requests as raw stdin streams because their bodies carry the pack data.
References
How to set up and validate locally
- Use a Cells-routed repository and clone it over SSH.
- Fetch from the same repository over SSH.
- Confirm both transfers continue past the intermediary's approximately 60-second idle client-body timeout.
- Confirm SSH push continues to stream its raw request body.