From c5e6dc298e89370d4789e6a3a7c12d3569898982 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carlos=20Mart=C3=ADn=20Nieto?= Date: Sat, 20 May 2017 19:08:23 +0200 Subject: [PATCH] http: correct EOF from stream and do send out our buffered data --- http.go | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/http.go b/http.go index 340433c..0b2ef57 100644 --- a/http.go +++ b/http.go @@ -25,6 +25,8 @@ import ( "bytes" "errors" "fmt" + "io" + "io/ioutil" "net/http" "reflect" "runtime" @@ -128,6 +130,7 @@ func (self *ManagedTransport) Action(url string, action SmartService) (SmartSubt } func (self *ManagedTransport) Close() error { + self.client = nil return nil } @@ -190,9 +193,11 @@ func (self *ManagedHttpStream) sendRequest() error { var password string for { req := &http.Request{ - Method: self.req.Method, - URL: self.req.URL, - Header: self.req.Header, + Method: self.req.Method, + URL: self.req.URL, + Header: self.req.Header, + Body: ioutil.NopCloser(&self.postBuffer), + ContentLength: int64(self.postBuffer.Len()), } req.SetBasicAuth(userName, password) @@ -352,7 +357,13 @@ func smartSubtransportRead(s *C.git_smart_subtransport_stream, data *C.char, l C n, err := stream.Read(p) if err != nil { - return setLibgit2Error(err) + if err == io.EOF { + *read = C.size_t(0) + return 0 + } + + setLibgit2Error(err) + return -1 } *read = C.size_t(n)