Update ogs_pollset library

- Fix the ogs_pollset_remove() bug in select(WIN32), kqueue(MacOSX)
- Modify to enable ogs_pollset_remove() in pollset callback handler
This commit is contained in:
Sukchan Lee
2020-11-09 22:57:14 -05:00
parent 830587a250
commit 23e8e6577c
5 changed files with 259 additions and 5 deletions

View File

@@ -27,6 +27,8 @@ extern const ogs_pollset_actions_t ogs_kqueue_actions;
extern const ogs_pollset_actions_t ogs_epoll_actions;
extern const ogs_pollset_actions_t ogs_select_actions;
static void *self_handler_data = NULL;
ogs_pollset_actions_t ogs_pollset_actions;
bool ogs_pollset_actions_initialized = false;
@@ -87,7 +89,11 @@ ogs_poll_t *ogs_pollset_add(ogs_pollset_t *pollset, short when,
poll->when = when;
poll->fd = fd;
poll->handler = handler;
poll->data = data;
if (data == &self_handler_data)
poll->data = poll;
else
poll->data = data;
poll->pollset = pollset;
@@ -117,3 +123,8 @@ void ogs_pollset_remove(ogs_poll_t *poll)
ogs_pool_free(&pollset->pool, poll);
}
void *ogs_pollset_self_handler_data(void)
{
return &self_handler_data;
}