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:
parent
c5d3ed328b
commit
15d56dd9da
2 changed files with 17 additions and 2 deletions
|
@ -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
|
||||
--------------------------------------
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
|
Loading…
Add table
Reference in a new issue