Improve ssh_socket_free().

git-svn-id: svn+ssh://svn.berlios.de/svnroot/repos/libssh/trunk@381 7dcaeef0-15fb-0310-b436-a5af3365683c
This commit is contained in:
Andreas Schneider
2009-04-03 12:50:17 +00:00
parent 2791ce7e01
commit b5eb33bb69
2 changed files with 24 additions and 25 deletions

View File

@@ -41,6 +41,7 @@
*/
SSH_SESSION *ssh_new(void) {
SSH_SESSION *session;
session = malloc(sizeof (SSH_SESSION));
if (session == NULL) {
return NULL;
@@ -87,28 +88,23 @@ err:
return NULL;
}
void ssh_cleanup(SSH_SESSION *session){
int i;
enter_function();
void ssh_cleanup(SSH_SESSION *session) {
int i;
enter_function();
if(session->serverbanner)
free(session->serverbanner);
if(session->clientbanner)
free(session->clientbanner);
if(session->in_buffer)
buffer_free(session->in_buffer);
if(session->out_buffer)
buffer_free(session->out_buffer);
if(session->banner)
free(session->banner);
if(session->options)
ssh_options_free(session->options);
if(session->current_crypto)
crypto_free(session->current_crypto);
if(session->next_crypto)
crypto_free(session->next_crypto);
if(session->socket)
ssh_socket_free(session->socket);
if (session == NULL) {
return;
}
SAFE_FREE(session->serverbanner);
SAFE_FREE(session->clientbanner);
SAFE_FREE(session->banner);
buffer_free(session->in_buffer);
buffer_free(session->out_buffer);
crypto_free(session->current_crypto);
crypto_free(session->next_crypto);
ssh_socket_free(session->socket);
ssh_options_free(session->options);
// delete all channels
while(session->channels)
channel_free(session->channels);

View File

@@ -120,10 +120,13 @@ struct socket *ssh_socket_new(SSH_SESSION *session) {
* \brief Deletes a socket object
*/
void ssh_socket_free(struct socket *s){
ssh_socket_close(s);
buffer_free(s->in_buffer);
buffer_free(s->out_buffer);
free(s);
if (s == NULL) {
return;
}
ssh_socket_close(s);
buffer_free(s->in_buffer);
buffer_free(s->out_buffer);
SAFE_FREE(s);
}
#ifndef _WIN32