diff options
author | Andreas Schneider <mail@cynapses.org> | 2009-04-30 09:07:12 +0000 |
---|---|---|
committer | Andreas Schneider <mail@cynapses.org> | 2009-04-30 09:07:12 +0000 |
commit | 982045bb966d957f615e63018e63367817bd3bb3 (patch) | |
tree | f52701c07eab067ae3e14847faa41c7b5c7c44c5 /libssh/server.c | |
parent | c3ee07d747dcffdc06b6626817c70c1a74d1c921 (diff) | |
download | libssh-982045bb966d957f615e63018e63367817bd3bb3.tar.gz libssh-982045bb966d957f615e63018e63367817bd3bb3.tar.xz libssh-982045bb966d957f615e63018e63367817bd3bb3.zip |
Improve ssh_accept().
git-svn-id: svn+ssh://svn.berlios.de/svnroot/repos/libssh/trunk@656 7dcaeef0-15fb-0310-b436-a5af3365683c
Diffstat (limited to 'libssh/server.c')
-rw-r--r-- | libssh/server.c | 61 |
1 files 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; } + /** @} */ |