Skip to content
Snippets Groups Projects
Commit 15d56dd9 authored by Andy Green's avatar Andy Green
Browse files

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: default avatarAndy Green <andy.green@linaro.org>
parent c5d3ed32
Branches
Tags
No related merge requests found
......@@ -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;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment