diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/openssl_stream.c | 1 | ||||
-rw-r--r-- | src/transports/smart_protocol.c | 4 | ||||
-rw-r--r-- | src/transports/ssh.c | 8 |
3 files changed, 9 insertions, 4 deletions
diff --git a/src/openssl_stream.c b/src/openssl_stream.c index 2ebfac738..78f705e49 100644 --- a/src/openssl_stream.c +++ b/src/openssl_stream.c @@ -55,6 +55,7 @@ static int ssl_set_error(SSL *ssl, int error) break; } giterr_set(GITERR_NET, "SSL error: received early EOF"); + return GIT_EEOF; break; case SSL_ERROR_SSL: e = ERR_get_error(); diff --git a/src/transports/smart_protocol.c b/src/transports/smart_protocol.c index 66f78f73c..0920f2eef 100644 --- a/src/transports/smart_protocol.c +++ b/src/transports/smart_protocol.c @@ -52,7 +52,7 @@ int git_smart__store_refs(transport_smart *t, int flushes) if (recvd == 0 && !flush) { giterr_set(GITERR_NET, "early EOF"); - return -1; + return GIT_EEOF; } continue; @@ -770,7 +770,7 @@ static int parse_report(transport_smart *transport, git_push *push) if (recvd == 0) { giterr_set(GITERR_NET, "early EOF"); - return -1; + return GIT_EEOF; } continue; } diff --git a/src/transports/ssh.c b/src/transports/ssh.c index 0d179e715..55f715b1d 100644 --- a/src/transports/ssh.c +++ b/src/transports/ssh.c @@ -129,10 +129,14 @@ static int ssh_stream_read( return -1; } - /* Having something in stderr is typically a not-found error */ + /* + * If we can't get anything out of stdout, it's typically a + * not-found error, so read from stderr and signal EOF on + * stderr. + */ if (rc == 0 && (rc = libssh2_channel_read_stderr(s->channel, buffer, buf_size)) > 0) { giterr_set(GITERR_SSH, "%*s", rc, buffer); - return -1; + return GIT_EEOF; } |