From 7908196d194b4536b60ccf13914f5722ab97cda4 Mon Sep 17 00:00:00 2001 From: "Santiago M. Mola" Date: Fri, 9 Jun 2017 12:13:53 +0200 Subject: ensure receive-pack session is closed on push. * at low level, ReceivePack must close its stream to the server to signal it has finished. * remote.go: Close() must be called on session. --- plumbing/transport/internal/common/common.go | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'plumbing/transport/internal/common') diff --git a/plumbing/transport/internal/common/common.go b/plumbing/transport/internal/common/common.go index f67ae29..7001d05 100644 --- a/plumbing/transport/internal/common/common.go +++ b/plumbing/transport/internal/common/common.go @@ -263,6 +263,10 @@ func (s *session) ReceivePack(req *packp.ReferenceUpdateRequest) (*packp.ReportS return nil, err } + if err := s.Stdin.Close(); err != nil { + return nil, err + } + if !req.Capabilities.Supports(capability.ReportStatus) { // If we have neither report-status or sideband, we can only // check return value error. @@ -302,7 +306,7 @@ func (s *session) finish() error { func (s *session) Close() error { if err := s.finish(); err != nil { _ = s.Command.Close() - return nil + return err } return s.Command.Close() -- cgit