diff options
| author | Joseph Southwell <joseph@southwell.org> | 2014-02-02 19:25:16 +0100 |
|---|---|---|
| committer | Andreas Schneider <asn@cryptomilk.org> | 2014-02-02 22:19:46 +0100 |
| commit | eedecd02694cfba2796c79496e1d6c9ebc7ea97a (patch) | |
| tree | 21bfc42393d988cf9658b7bc571bc1c1591a8f9f /src/session.c | |
| parent | d90478448985a1e21cc240fd87fc5a14b4bb978a (diff) | |
| download | libssh-eedecd02694cfba2796c79496e1d6c9ebc7ea97a.tar.gz libssh-eedecd02694cfba2796c79496e1d6c9ebc7ea97a.tar.xz libssh-eedecd02694cfba2796c79496e1d6c9ebc7ea97a.zip | |
client: Fix EOF session error reporting.
Reviewed-by: Andreas Schneider <asn@cryptomilk.org>
Diffstat (limited to 'src/session.c')
| -rw-r--r-- | src/session.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/src/session.c b/src/session.c index 1128791e..b26eb969 100644 --- a/src/session.c +++ b/src/session.c @@ -695,8 +695,13 @@ void ssh_socket_exception_callback(int code, int errno_code, void *user){ ssh_session session=(ssh_session)user; SSH_LOG(SSH_LOG_RARE,"Socket exception callback: %d (%d)",code, errno_code); - session->session_state=SSH_SESSION_STATE_ERROR; - ssh_set_error(session,SSH_FATAL,"Socket error: %s",strerror(errno_code)); + session->session_state = SSH_SESSION_STATE_ERROR; + if (errno_code == 0 && code == SSH_SOCKET_EXCEPTION_EOF) { + ssh_set_error(session, SSH_FATAL, "Socket error: disconnected"); + } else { + ssh_set_error(session, SSH_FATAL, "Socket error: %s", strerror(errno_code)); + } + session->ssh_connection_callback(session); } |
