summaryrefslogtreecommitdiffstats
path: root/src/session.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/session.c')
-rw-r--r--src/session.c9
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);
}