aboutsummaryrefslogtreecommitdiff
path: root/libssh
diff options
context:
space:
mode:
Diffstat (limited to 'libssh')
-rw-r--r--libssh/init.c1
-rw-r--r--libssh/poll.c12
-rw-r--r--libssh/socket.c12
3 files changed, 24 insertions, 1 deletions
diff --git a/libssh/init.c b/libssh/init.c
index 5725fef..e1159fe 100644
--- a/libssh/init.c
+++ b/libssh/init.c
@@ -72,6 +72,7 @@ int ssh_finalize(void) {
ssh_free_global_poll_ctx();
ssh_regex_finalize();
ssh_crypto_finalize();
+ ssh_socket_cleanup();
#ifdef HAVE_LIBGCRYPT
gcry_control(GCRYCTL_TERM_SECMEM);
#elif defined HAVE_LIBCRYPTO
diff --git a/libssh/poll.c b/libssh/poll.c
index dc28b9b..67671a0 100644
--- a/libssh/poll.c
+++ b/libssh/poll.c
@@ -67,6 +67,10 @@ void ssh_poll_init(void) {
return;
}
+void ssh_poll_cleanup(void) {
+ return;
+}
+
int ssh_poll(ssh_pollfd_t *fds, nfds_t nfds, int timeout) {
return poll((struct pollfd *) fds, nfds, timeout);
}
@@ -217,6 +221,14 @@ void ssh_poll_init(void) {
}
}
+void ssh_poll_cleanup(void) {
+ win_poll = bsd_poll;
+
+ FreeLibrary(hlib);
+
+ hlib = NULL;
+}
+
int ssh_poll(ssh_pollfd_t *fds, nfds_t nfds, int timeout) {
return win_poll(fds, nfds, timeout);
}
diff --git a/libssh/socket.c b/libssh/socket.c
index 7c5a83f..9350bca 100644
--- a/libssh/socket.c
+++ b/libssh/socket.c
@@ -111,10 +111,20 @@ int ssh_socket_init(void) {
return -1;
}
- ssh_poll_init();
#endif
+ ssh_poll_init();
+
return 0;
}
+
+/**
+ * @brief Cleanup the socket system.
+ */
+void ssh_socket_cleanup(void) {
+ ssh_poll_cleanup();
+}
+
+
/**
* \internal
* \brief creates a new Socket object