From 7dbc66e4a389b5d7cd075f73559415aaa0e555df Mon Sep 17 00:00:00 2001 From: Aris Adamantiadis Date: Mon, 15 Jun 2009 15:31:23 +0000 Subject: ssh_init() fixes in client.c and server.c for this git-svn-id: svn+ssh://svn.berlios.de/svnroot/repos/libssh/trunk@778 7dcaeef0-15fb-0310-b436-a5af3365683c --- libssh/client.c | 7 +------ libssh/init.c | 19 ++++++++++++++++++- libssh/server.c | 6 +----- 3 files changed, 20 insertions(+), 12 deletions(-) (limited to 'libssh') diff --git a/libssh/client.c b/libssh/client.c index 07dc0f83..6255845b 100644 --- a/libssh/client.c +++ b/libssh/client.c @@ -467,15 +467,10 @@ int ssh_connect(SSH_SESSION *session) { session->alive = 0; session->client = 1; - if (ssh_crypto_init() < 0) { + if (ssh_init() < 0) { leave_function(); return SSH_ERROR; } - if (ssh_socket_init() < 0) { - leave_function(); - return SSH_ERROR; - } - if (options->fd == -1 && options->host == NULL) { ssh_set_error(session, SSH_FATAL, "Hostname required"); leave_function(); diff --git a/libssh/init.c b/libssh/init.c index b6c99443..8d2ae032 100644 --- a/libssh/init.c +++ b/libssh/init.c @@ -31,12 +31,29 @@ * @{ */ +/** + * @brief initialize global cryptographic data structures. + * + * This function should only be called once, at the begining of the program, in the main thread. It may be omitted if your program is not multithreaded. + * + * @returns 0 + */ +int ssh_init(void) { + if(ssh_crypto_init()) + return -1; + if(ssh_socket_init()) + return -1; + return 0; +} + + /** * @brief Finalize and cleanup all libssh and cryptographic data structures. * * This function should only be called once, at the end of the program! * - * @returns 0 + * @returns -1 in case of error + @returns 0 otherwise */ int ssh_finalize(void) { ssh_crypto_finalize(); diff --git a/libssh/server.c b/libssh/server.c index f1c156f4..25021f68 100644 --- a/libssh/server.c +++ b/libssh/server.c @@ -135,7 +135,7 @@ int ssh_bind_listen(SSH_BIND *ssh_bind) { return -1; } - if (ssh_socket_init() < 0) { + if (ssh_init() < 0) { return -1; } @@ -479,10 +479,6 @@ int ssh_accept(SSH_SESSION *session) { return -1; } - if (ssh_crypto_init() < 0) { - return -1; - } - session->alive = 1; session->clientbanner = ssh_get_banner(session); -- cgit v1.2.3