From e04d30e083f43c6e0cbf939da600ea67a3396266 Mon Sep 17 00:00:00 2001 From: milo Date: Wed, 13 Apr 2011 23:51:52 +0200 Subject: Bug fix in ssh_poll_ctx_remove() --- src/poll.c | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'src/poll.c') diff --git a/src/poll.c b/src/poll.c index 79dbb49f..652ae9b0 100644 --- a/src/poll.c +++ b/src/poll.c @@ -605,6 +605,7 @@ void ssh_poll_ctx_remove(ssh_poll_ctx ctx, ssh_poll_handle p) { if (ctx->polls_used > 0 && ctx->polls_used != i) { ctx->pollfds[i] = ctx->pollfds[ctx->polls_used]; ctx->pollptrs[i] = ctx->pollptrs[ctx->polls_used]; + ctx->pollptrs[i]->x.idx = i; } /* this will always leave at least chunk_size polls allocated */ @@ -897,6 +898,9 @@ int ssh_event_remove_fd(ssh_event event, socket_t fd) { p = event->ctx->pollptrs[i]; ssh_poll_ctx_remove(event->ctx, p); rc = SSH_OK; + /* restart the loop */ + used = event->ctx->polls_used; + i = 0; } } -- cgit v1.2.3