http: correct EOF from stream and do send out our buffered data
This commit is contained in:
parent
dd57a6a89b
commit
c5e6dc298e
19
http.go
19
http.go
|
@ -25,6 +25,8 @@ import (
|
||||||
"bytes"
|
"bytes"
|
||||||
"errors"
|
"errors"
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"io"
|
||||||
|
"io/ioutil"
|
||||||
"net/http"
|
"net/http"
|
||||||
"reflect"
|
"reflect"
|
||||||
"runtime"
|
"runtime"
|
||||||
|
@ -128,6 +130,7 @@ func (self *ManagedTransport) Action(url string, action SmartService) (SmartSubt
|
||||||
}
|
}
|
||||||
|
|
||||||
func (self *ManagedTransport) Close() error {
|
func (self *ManagedTransport) Close() error {
|
||||||
|
self.client = nil
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -190,9 +193,11 @@ func (self *ManagedHttpStream) sendRequest() error {
|
||||||
var password string
|
var password string
|
||||||
for {
|
for {
|
||||||
req := &http.Request{
|
req := &http.Request{
|
||||||
Method: self.req.Method,
|
Method: self.req.Method,
|
||||||
URL: self.req.URL,
|
URL: self.req.URL,
|
||||||
Header: self.req.Header,
|
Header: self.req.Header,
|
||||||
|
Body: ioutil.NopCloser(&self.postBuffer),
|
||||||
|
ContentLength: int64(self.postBuffer.Len()),
|
||||||
}
|
}
|
||||||
|
|
||||||
req.SetBasicAuth(userName, password)
|
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)
|
n, err := stream.Read(p)
|
||||||
if err != nil {
|
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)
|
*read = C.size_t(n)
|
||||||
|
|
Loading…
Reference in New Issue