diff options
author | milo <milo@r0ot.me> | 2010-08-12 23:25:20 +0200 |
---|---|---|
committer | Andreas Schneider <asn@cynapses.org> | 2010-08-13 11:17:09 +0200 |
commit | e533c3f33b83a7a7fd820bf1fee91c53b11228c1 (patch) | |
tree | 64a339474bcf96f2c653c329b4783d2ba1fc0487 /libssh | |
parent | 41ab19e1d05ff598cf3f2fc3aca8631e4403dd93 (diff) | |
download | libssh-e533c3f33b83a7a7fd820bf1fee91c53b11228c1.tar.gz libssh-e533c3f33b83a7a7fd820bf1fee91c53b11228c1.tar.xz libssh-e533c3f33b83a7a7fd820bf1fee91c53b11228c1.zip |
server: Fix missing socket close notification.
Signed-off-by: Andreas Schneider <asn@cynapses.org>
Diffstat (limited to 'libssh')
-rw-r--r-- | libssh/client.c | 17 | ||||
-rw-r--r-- | libssh/server.c | 5 | ||||
-rw-r--r-- | libssh/session.c | 17 |
3 files changed, 18 insertions, 21 deletions
diff --git a/libssh/client.c b/libssh/client.c index 0c875260..7efe3627 100644 --- a/libssh/client.c +++ b/libssh/client.c @@ -66,21 +66,6 @@ static void socket_callback_connected(int code, int errno_code, void *user){ /** * @internal - * @brief Callback to be called when the socket received an exception code. - * @param user is a pointer to session - */ -static void socket_callback_exception(int code, int errno_code, void *user){ - ssh_session session=(ssh_session)user; - enter_function(); - ssh_log(session,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->ssh_connection_callback(session); - leave_function(); -} - -/** - * @internal * * @brief Gets the banner from socket and saves it in session. * Updates the session state @@ -701,7 +686,7 @@ int ssh_connect(ssh_session session) { ssh_socket_set_callbacks(session->socket,&session->socket_callbacks); session->socket_callbacks.connected=socket_callback_connected; session->socket_callbacks.data=callback_receive_banner; - session->socket_callbacks.exception=socket_callback_exception; + session->socket_callbacks.exception=ssh_socket_exception_callback; session->socket_callbacks.userdata=session; if (session->fd != SSH_INVALID_SOCKET) { ssh_socket_set_fd(session->socket, session->fd); diff --git a/libssh/server.c b/libssh/server.c index f6ddf3dd..3e73ab9d 100644 --- a/libssh/server.c +++ b/libssh/server.c @@ -598,7 +598,6 @@ static void ssh_server_connection_callback(ssh_session session){ leave_function(); } - /** * @internal * @@ -765,9 +764,7 @@ int ssh_handle_key_exchange(ssh_session session) { session->session_state = SSH_SESSION_STATE_SOCKET_CONNECTED; ssh_socket_set_callbacks(session->socket,&session->socket_callbacks); session->socket_callbacks.data=callback_receive_banner; -#if 0 - session->socket_callbacks.exception=socket_callback_exception; -#endif + session->socket_callbacks.exception=ssh_socket_exception_callback; session->socket_callbacks.userdata=session; rc = server_set_kex(session); diff --git a/libssh/session.c b/libssh/session.c index 06e0a259..a70826f6 100644 --- a/libssh/session.c +++ b/libssh/session.c @@ -500,6 +500,21 @@ SSH_PACKET_CALLBACK(ssh_packet_ignore_callback){ return SSH_PACKET_USED; } +/** + * @internal + * @brief Callback to be called when the socket received an exception code. + * @param user is a pointer to session + */ +void ssh_socket_exception_callback(int code, int errno_code, void *user){ + ssh_session session=(ssh_session)user; + enter_function(); + ssh_log(session,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->ssh_connection_callback(session); + leave_function(); +} + /* @} */ -/* vim: set ts=2 sw=2 et cindent: */ +/* vim: set ts=4 sw=4 et cindent: */ |