From 982045bb966d957f615e63018e63367817bd3bb3 Mon Sep 17 00:00:00 2001 From: Andreas Schneider Date: Thu, 30 Apr 2009 09:07:12 +0000 Subject: Improve ssh_accept(). git-svn-id: svn+ssh://svn.berlios.de/svnroot/repos/libssh/trunk@656 7dcaeef0-15fb-0310-b436-a5af3365683c --- libssh/server.c | 61 +++++++++++++++++++++++++++++++++++++-------------------- 1 file changed, 40 insertions(+), 21 deletions(-) diff --git a/libssh/server.c b/libssh/server.c index d51ec3e..9473c9a 100644 --- a/libssh/server.c +++ b/libssh/server.c @@ -471,27 +471,46 @@ static int dh_handshake_server(SSH_SESSION *session) { return 0; } -/* do the banner and key exchange */ -int ssh_accept(SSH_SESSION *session){ - ssh_send_banner(session,1); - if (ssh_crypto_init() < 0) { - return -1; - } - session->alive=1; - session->clientbanner=ssh_get_banner(session); - if (server_set_kex(session) < 0) { - return -1; - } - ssh_send_kex(session,1); - if(ssh_get_kex(session,1) < 0) { - return -1; - } - ssh_list_kex(session, &session->client_kex); - crypt_set_algorithms_server(session); - if(dh_handshake_server(session)) - return -1; - session->connected=1; - return 0; +/* Do the banner and key exchange */ +int ssh_accept(SSH_SESSION *session) { + if (ssh_send_banner(session, 1) < 0) { + return -1; + } + + if (ssh_crypto_init() < 0) { + return -1; + } + + session->alive = 1; + + session->clientbanner = ssh_get_banner(session); + if (session->clientbanner == NULL) { + return -1; + } + + if (server_set_kex(session) < 0) { + return -1; + } + + if (ssh_send_kex(session, 1) < 0) { + return -1; + } + + if (ssh_get_kex(session,1) < 0) { + return -1; + } + + ssh_list_kex(session, &session->client_kex); + crypt_set_algorithms_server(session); + + if (dh_handshake_server(session) < 0) { + return -1; + } + + session->connected = 1; + + return 0; } + /** @} */ -- cgit