diff options
author | Santiago M. Mola <santi@mola.io> | 2016-11-25 09:25:49 +0100 |
---|---|---|
committer | Máximo Cuadros <mcuadros@gmail.com> | 2016-11-25 09:25:49 +0100 |
commit | 9e34f68d980de57631c588aaa910c9ea95ed7c2e (patch) | |
tree | b1bd9f867b757ca46ada2f349d122723dde3529c /plumbing/format/packp/advrefs/decoder.go | |
parent | 8966c042795509ed17730e50d352ad69901c3da8 (diff) | |
download | go-git-9e34f68d980de57631c588aaa910c9ea95ed7c2e.tar.gz |
plumbing/transport: add common tests and fixes. (#136)
* plumbing/transport: add common tests and fixes.
* add common test suite for different transport implementations.
* fix different behaviour on error handling for ssh and http.
fixes issue #123.
* support detecting unexisting repositories with SSH + GitHub/Bitbucket
(apparently, there is no standard for all SSH servers).
* remove ssh.NewClient (only DefaultClient makes sense at the moment).
* make ssh.Client and http.Client private.
* utils/ioutil: utilities to work with io interfaces.
* * transport: test actual objects fetched, not just packfile size.
* * fix doc typo.
* * improve UploadPackRequest.IsEmpty
Diffstat (limited to 'plumbing/format/packp/advrefs/decoder.go')
-rw-r--r-- | plumbing/format/packp/advrefs/decoder.go | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/plumbing/format/packp/advrefs/decoder.go b/plumbing/format/packp/advrefs/decoder.go index b654882..c50eeef 100644 --- a/plumbing/format/packp/advrefs/decoder.go +++ b/plumbing/format/packp/advrefs/decoder.go @@ -86,6 +86,12 @@ func decodePrefix(d *Decoder) decoderStateFn { return nil } + // If the repository is empty, we receive a flush here (SSH). + if isFlush(d.line) { + d.err = ErrEmpty + return nil + } + if isPrefix(d.line) { tmp := make([]byte, len(d.line)) copy(tmp, d.line) @@ -117,6 +123,12 @@ func isFlush(payload []byte) bool { // list-of-refs is comming, and the hash will be followed by the first // advertised ref. func decodeFirstHash(p *Decoder) decoderStateFn { + // If the repository is empty, we receive a flush here (HTTP). + if isFlush(p.line) { + p.err = ErrEmpty + return nil + } + if len(p.line) < hashSize { p.error("cannot read hash, pkt-line too short") return nil |