Merge pull request #23961 from Faless/lws_poll_all

Websocket LWS keep servicing till no CB are left
This commit is contained in:
Rémi Verschelde 2018-11-26 11:48:31 +01:00 committed by GitHub
commit 942855a9ee
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 10 additions and 5 deletions

View File

@ -60,6 +60,7 @@ void _lws_make_protocols(void *p_obj, lws_callback_function *p_callback, PoolVec
protected: \
struct _LWSRef *_lws_ref; \
struct lws_context *context; \
bool _keep_servicing; \
\
static int _lws_gd_callback(struct lws *wsi, enum lws_callback_reasons reason, void *user, void *in, size_t len) { \
\
@ -71,6 +72,7 @@ protected: \
if (!ref->is_valid) \
return 0; \
CNAME *helper = (CNAME *)ref->obj; \
helper->_keep_servicing = true; \
return helper->_handle_cb(wsi, reason, user, in, len); \
} \
\
@ -91,11 +93,14 @@ public: \
\
void _lws_poll() { \
ERR_FAIL_COND(context == NULL); \
\
if (::_lws_poll(context, _lws_ref)) { \
context = NULL; \
_lws_ref = NULL; \
} \
do { \
_keep_servicing = false; \
if (::_lws_poll(context, _lws_ref)) { \
context = NULL; \
_lws_ref = NULL; \
break; \
} \
} while (_keep_servicing); \
} \
\
protected: