From e40261c22ce8630558fdadf2932f472793528a1b Mon Sep 17 00:00:00 2001 From: milo Date: Sun, 20 Feb 2011 14:06:19 +0100 Subject: poll: Added function to remove fd from the event context. --- src/poll.c | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) (limited to 'src/poll.c') diff --git a/src/poll.c b/src/poll.c index 233e8c30..bfb54e64 100644 --- a/src/poll.c +++ b/src/poll.c @@ -835,6 +835,36 @@ int ssh_event_add_session(ssh_event event, ssh_session session) { return SSH_OK; } +/** + * @brief Remove a socket fd from an event context. + * + * @param event The ssh_event object. + * @param fd The fd to remove. + * + * @returns SSH_OK on success + * SSH_ERROR on failure + */ +int ssh_event_remove_fd(ssh_event event, socket_t fd) { + ssh_poll_handle p; + register size_t i, used; + int rc = SSH_ERROR; + + if(event == NULL || event->ctx == NULL) { + return SSH_ERROR; + } + + used = event->ctx->polls_used; + for (i = 0; i < used; i++) { + if(fd == event->ctx->pollfds[i].fd) { + p = event->ctx->pollptrs[i]; + ssh_poll_ctx_remove(event->ctx, p); + rc = SSH_OK; + } + } + + return rc; +} + /** * @brief Remove a session object from an event context. * -- cgit v1.2.3