diff --git a/src/common/multiio.c b/src/common/multiio.c --- a/src/common/multiio.c +++ b/src/common/multiio.c @@ -179,7 +179,13 @@ int multiio_poll(multiio_context_t conte size_t counter; struct multiio_poll_travinfo travinfo; - poll(context->pollfds, context->nfds, -1); + int ret; + + ret = poll(context->pollfds, context->nfds, -1); + if(ret == -1) + { + perror("poll"); + } for(counter = 0; counter < context->nfds; counter ++) if(context->pollfds[counter].revents) @@ -191,6 +197,8 @@ int multiio_poll(multiio_context_t conte &travinfo, (list_traverse_func_t)&multiio_poll_invoke_handlers, LIST_FRNT | LIST_SAVE); + + context->pollfds[counter].revents = 0; } return 0; @@ -293,6 +301,7 @@ int multiio_socket_add(multiio_context_t pollfds = context->pollfds; socket_infos = context->socket_infos; + memset(&pollfds[context->nfds], 0, sizeof(struct pollfd)); pollfds[context->nfds].fd = fd; pollfds[context->nfds].events = events; socket_infos[context->nfds].socket_type = socket_type;