aboutsummaryrefslogtreecommitdiff
path: root/libssh/server.c
diff options
context:
space:
mode:
authorAndreas Schneider <mail@cynapses.org>2009-04-30 09:07:12 +0000
committerAndreas Schneider <mail@cynapses.org>2009-04-30 09:07:12 +0000
commit982045bb966d957f615e63018e63367817bd3bb3 (patch)
treef52701c07eab067ae3e14847faa41c7b5c7c44c5 /libssh/server.c
parentc3ee07d747dcffdc06b6626817c70c1a74d1c921 (diff)
downloadlibssh-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.c61
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;
}
+
/** @}
*/