diff --git a/src/session_client.c b/src/session_client.c index f9351c2d..22e3313a 100644 --- a/src/session_client.c +++ b/src/session_client.c @@ -39,6 +39,9 @@ #include #include +#ifdef NC_ENABLED_SSH_TLS +#include +#endif #include #include "compat.h" @@ -1917,6 +1920,13 @@ nc_client_init(void) return -1; } +#ifdef NC_ENABLED_SSH_TLS + if (ssh_init()) { + ERR(NULL, "%s: failed to init libssh.", __func__); + return -1; + } +#endif + return 0; } @@ -1929,6 +1939,7 @@ nc_client_destroy(void) nc_client_ch_del_bind(NULL, 0, 0); nc_client_ssh_destroy_opts(); nc_client_tls_destroy_opts(); + ssh_finalize(); #endif /* NC_ENABLED_SSH_TLS */ } diff --git a/src/session_server.c b/src/session_server.c index d93ae334..94dd5d50 100644 --- a/src/session_server.c +++ b/src/session_server.c @@ -35,6 +35,7 @@ #ifdef NC_ENABLED_SSH_TLS #include +#include #endif #include "compat.h" @@ -809,6 +810,12 @@ nc_server_init(void) ERR(NULL, "%s: failed to init CURL.", __func__); goto error; } + + /* optional for dynamic library, mandatory for static */ + if (ssh_init()) { + ERR(NULL, "%s: failed to init libssh.", __func__); + goto error; + } #endif if ((r = pthread_mutex_init(&server_opts.bind_lock, NULL))) { @@ -866,6 +873,7 @@ nc_server_destroy(void) nc_server_config_ks_keystore(NULL, NC_OP_DELETE); nc_server_config_ts_truststore(NULL, NC_OP_DELETE); curl_global_cleanup(); + ssh_finalize(); #endif /* NC_ENABLED_SSH_TLS */ }