diff --git a/src/client.c b/src/client.c index f22cb055..40c238aa 100644 --- a/src/client.c +++ b/src/client.c @@ -667,6 +667,8 @@ void ssh_disconnect(ssh_session session) { ssh_socket_close(session->socket); } error: + session->recv_seq = 0; + session->send_seq = 0; session->alive = 0; if (session->socket != NULL){ ssh_socket_reset(session->socket); @@ -682,6 +684,13 @@ error: crypto_free(session->current_crypto); session->current_crypto=NULL; } + if (session->next_crypto) { + crypto_free(session->next_crypto); + session->next_crypto = crypto_new(); + if (session->next_crypto == NULL) { + ssh_set_error_oom(session); + } + } if (session->in_buffer) { ssh_buffer_reinit(session->in_buffer); }