mirror of
https://git.libssh.org/projects/libssh.git
synced 2026-02-11 02:38:09 +09:00
poll: Added function to remove fd from the event context.
This commit is contained in:
@@ -482,6 +482,7 @@ LIBSSH_API ssh_event ssh_event_new(void);
|
|||||||
LIBSSH_API int ssh_event_add_fd(ssh_event event, socket_t fd, short events,
|
LIBSSH_API int ssh_event_add_fd(ssh_event event, socket_t fd, short events,
|
||||||
ssh_event_callback cb, void *userdata);
|
ssh_event_callback cb, void *userdata);
|
||||||
LIBSSH_API int ssh_event_add_session(ssh_event event, ssh_session session);
|
LIBSSH_API int ssh_event_add_session(ssh_event event, ssh_session session);
|
||||||
|
LIBSSH_API int ssh_event_remove_fd(ssh_event event, socket_t fd);
|
||||||
LIBSSH_API int ssh_event_remove_session(ssh_event event, ssh_session session);
|
LIBSSH_API int ssh_event_remove_session(ssh_event event, ssh_session session);
|
||||||
LIBSSH_API void ssh_event_free(ssh_event event);
|
LIBSSH_API void ssh_event_free(ssh_event event);
|
||||||
|
|
||||||
|
|||||||
30
src/poll.c
30
src/poll.c
@@ -835,6 +835,36 @@ int ssh_event_add_session(ssh_event event, ssh_session session) {
|
|||||||
return SSH_OK;
|
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.
|
* @brief Remove a session object from an event context.
|
||||||
*
|
*
|
||||||
|
|||||||
Reference in New Issue
Block a user