diff options
author | Carlos Martín Nieto <cmn@dwim.me> | 2015-05-18 16:04:55 +0200 |
---|---|---|
committer | Carlos Martín Nieto <cmn@dwim.me> | 2015-05-20 15:08:39 +0200 |
commit | 1396c381782f446ae5ea177b0f5c407f90197c97 (patch) | |
tree | 1ca57e2cb7d8accf2a2fbda7b04fb3d3543e8703 /src | |
parent | e3435673b8ed862266b5351b9e18cb55ed55d335 (diff) | |
download | libgit2-1396c381782f446ae5ea177b0f5c407f90197c97.tar.gz |
errors: add GIT_EEOF to indicate early EOFcmn/server-errors
This can be used by tools to show mesages about failing to communicate
with the server. The error message in this case will often contain the
server's error message, as far as it managed to send anything.
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; } |