port forced service checking from libuv

Related to second part of

https://github.com/warmcat/libwebsockets/issues/638
This commit is contained in:
Andy Green 2016-10-05 08:49:53 +08:00
parent 846a3caf80
commit f7dd9d027a
2 changed files with 14 additions and 1 deletions

View file

@ -52,7 +52,7 @@ lws_uv_idle(uv_idle_t *handle
if (!lws_service_adjust_timeout(pt->context, 1, pt->tid))
/* yes... come back again later */
lwsl_debug("%s: done again\n", __func__);
return;
return;
}
/* there is nobody who needs service forcing, shut down idle */

View file

@ -144,6 +144,19 @@ lws_plat_service_tsi(struct lws_context *context, int timeout_ms, int tsi)
context->service_tid = context->service_tid_detected;
timeout_ms = lws_service_adjust_timeout(context, timeout_ms, tsi);
/*
* is there anybody with pending stuff that needs service forcing?
*/
if (!timeout_ms) {
/* -1 timeout means just do forced service */
lws_plat_service_tsi(context, -1, pt->tid);
/* still somebody left who wants forced service? */
if (!lws_service_adjust_timeout(context, 1, pt->tid)) {
/* yes... come back again later */
lwsl_debug("%s: done again\n", __func__);
}
return 0;
}
n = poll(pt->fds, pt->fds_count, timeout_ms);