Improve ssh_disconnect().
git-svn-id: svn+ssh://svn.berlios.de/svnroot/repos/libssh/trunk@490 7dcaeef0-15fb-0310-b436-a5af3365683c
Этот коммит содержится в:
родитель
c8269682fc
Коммит
c608883205
@ -586,22 +586,47 @@ char *ssh_get_issue_banner(SSH_SESSION *session) {
|
|||||||
return string_to_char(session->banner);
|
return string_to_char(session->banner);
|
||||||
}
|
}
|
||||||
|
|
||||||
/** \brief disconnect from a session (client or server)
|
/**
|
||||||
* \param session ssh session
|
* @brief Disconnect from a session (client or server).
|
||||||
|
*
|
||||||
|
* @param session The SSH session to disconnect.
|
||||||
*/
|
*/
|
||||||
void ssh_disconnect(SSH_SESSION *session){
|
void ssh_disconnect(SSH_SESSION *session) {
|
||||||
STRING *str;
|
STRING *str = NULL;
|
||||||
|
|
||||||
enter_function();
|
enter_function();
|
||||||
if(ssh_socket_is_open(session->socket)) {
|
|
||||||
buffer_add_u8(session->out_buffer,SSH2_MSG_DISCONNECT);
|
if (session == NULL) {
|
||||||
buffer_add_u32(session->out_buffer,htonl(SSH2_DISCONNECT_BY_APPLICATION));
|
leave_function();
|
||||||
str=string_from_char("Bye Bye");
|
return;
|
||||||
buffer_add_ssh_string(session->out_buffer,str);
|
}
|
||||||
free(str);
|
|
||||||
|
if (ssh_socket_is_open(session->socket)) {
|
||||||
|
if (buffer_add_u8(session->out_buffer, SSH2_MSG_DISCONNECT) < 0) {
|
||||||
|
goto error;
|
||||||
|
}
|
||||||
|
if (buffer_add_u32(session->out_buffer,
|
||||||
|
htonl(SSH2_DISCONNECT_BY_APPLICATION)) < 0) {
|
||||||
|
goto error;
|
||||||
|
}
|
||||||
|
|
||||||
|
str = string_from_char("Bye Bye");
|
||||||
|
if (str == NULL) {
|
||||||
|
goto error;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (buffer_add_ssh_string(session->out_buffer,str) < 0) {
|
||||||
|
string_free(str);
|
||||||
|
goto error;
|
||||||
|
}
|
||||||
|
string_free(str);
|
||||||
|
|
||||||
packet_send(session);
|
packet_send(session);
|
||||||
ssh_socket_close(session->socket);
|
ssh_socket_close(session->socket);
|
||||||
}
|
}
|
||||||
session->alive=0;
|
session->alive = 0;
|
||||||
|
|
||||||
|
error:
|
||||||
leave_function();
|
leave_function();
|
||||||
ssh_cleanup(session);
|
ssh_cleanup(session);
|
||||||
}
|
}
|
||||||
|
Загрузка…
x
Ссылка в новой задаче
Block a user