1
1

server: Fix missing socket close notification.

Signed-off-by: Andreas Schneider <asn@cynapses.org>
Этот коммит содержится в:
milo 2010-08-12 23:25:20 +02:00 коммит произвёл Andreas Schneider
родитель 41ab19e1d0
Коммит e533c3f33b
4 изменённых файлов: 20 добавлений и 21 удалений

Просмотреть файл

@ -148,4 +148,6 @@ struct ssh_session_struct {
int ssh_handle_packets(ssh_session session, int timeout);
void ssh_socket_exception_callback(int code, int errno_code, void *user);
#endif /* SESSION_H_ */

Просмотреть файл

@ -64,21 +64,6 @@ static void socket_callback_connected(int code, int errno_code, void *user){
leave_function();
}
/**
* @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
*
@ -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);

Просмотреть файл

@ -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);

Просмотреть файл

@ -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: */