diff options
author | Santiago M. Mola <santi@mola.io> | 2017-06-09 12:13:53 +0200 |
---|---|---|
committer | Santiago M. Mola <santi@mola.io> | 2017-06-13 14:57:36 +0200 |
commit | 7908196d194b4536b60ccf13914f5722ab97cda4 (patch) | |
tree | 86a1f83f0ef8f786653f6cb912079ff65363166a /plumbing/transport | |
parent | 2a00316b65585be2bf68e1ea9c0e42c6af4f5679 (diff) | |
download | go-git-7908196d194b4536b60ccf13914f5722ab97cda4.tar.gz |
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.
Diffstat (limited to 'plumbing/transport')
-rw-r--r-- | plumbing/transport/internal/common/common.go | 6 |
1 files changed, 5 insertions, 1 deletions
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() |