1
0
Fork 0
mirror of https://github.com/warmcat/libwebsockets.git synced 2025-03-09 00:00:04 +01:00

truncated send always callback on writeable

Suggested by a Windows log where leaf.jpg meets EAGAIN and after
issuing the truncated send buffer, never sends any more

https://github.com/warmcat/libwebsockets/issues/111#issuecomment-39873129

Added note in README.coding about WRITEABLE callbacks able to
be generated by lws.

Signed-off-by: Andy Green <andy.green@linaro.org>
This commit is contained in:
Andy Green 2014-04-10 11:23:18 +08:00
parent c5d3ed328b
commit 15d56dd9da
2 changed files with 17 additions and 2 deletions

View file

@ -67,6 +67,20 @@ in the ...WRITEABLE callback.
See the test server code for an example of how to do this.
Do not rely on only your own WRITEABLE requests appearing
---------------------------------------------------------
Libwebsockets may generate additional LWS_CALLBACK_CLIENT_WRITEABLE events
if it met network conditions where it had to buffer your send data internally.
So your code for LWS_CALLBACK_CLIENT_WRITEABLE needs to own the decision
about what to send, it can't assume that just because the writeable callback
came it really is time to send something.
It's quite possible you get an 'extra' writeable callback at any time and
just need to return 0 and wait for the expected callback later.
Closing connections from the user side
--------------------------------------

View file

@ -148,8 +148,9 @@ handle_truncated_send:
lwsl_info("***** %x partial send completed\n", wsi);
/* done with it, but don't free it */
n = real_len;
} else
libwebsocket_callback_on_writable(
}
/* always callback on writeable */
libwebsocket_callback_on_writable(
wsi->protocol->owning_server, wsi);
return n;