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

ss: cpd: ignore new requests while ongoing up to timeout

This commit is contained in:
Andy Green 2020-12-22 14:12:29 +00:00
parent 20ea15112f
commit 747ea560a0
2 changed files with 15 additions and 2 deletions

View file

@ -308,7 +308,10 @@ struct lws_context {
lws_system_blob_t system_blobs[LWS_SYSBLOB_TYPE_COUNT];
#if defined(LWS_WITH_SYS_SMD)
lws_smd_t smd;
lws_smd_t smd;
#endif
#if defined(LWS_WITH_SECURE_STREAMS)
struct lws_ss_handle *ss_cpd;
#endif
#if defined(LWS_WITH_NETWORK)

View file

@ -46,12 +46,16 @@ ss_cpd_state(void *userobj, void *sh, lws_ss_constate_t state,
switch (state) {
case LWSSSCS_CREATING:
lws_ss_start_timeout(m->ss, 3 * LWS_US_PER_SEC);
lws_ss_request_tx(m->ss);
break;
case LWSSSCS_QOS_ACK_REMOTE:
lws_system_cpd_set(cx, LWS_CPD_INTERNET_OK);
cx->ss_cpd = NULL;
return LWSSSSRET_DESTROY_ME;
case LWSSSCS_TIMEOUT:
case LWSSSCS_ALL_RETRIES_FAILED:
case LWSSSCS_DISCONNECTED:
/*
@ -59,6 +63,7 @@ ss_cpd_state(void *userobj, void *sh, lws_ss_constate_t state,
* cover the situation we didn't connect to anything
*/
lws_system_cpd_set(cx, LWS_CPD_NO_INTERNET);
cx->ss_cpd = NULL;
return LWSSSSRET_DESTROY_ME;
default:
@ -79,7 +84,12 @@ static const lws_ss_info_t ssi_cpd = {
int
lws_ss_sys_cpd(struct lws_context *cx)
{
if (lws_ss_create(cx, 0, &ssi_cpd, cx, NULL, NULL, NULL)) {
if (cx->ss_cpd) {
lwsl_notice("%s: CPD already ongoing\n", __func__);
return 0;
}
if (lws_ss_create(cx, 0, &ssi_cpd, cx, &cx->ss_cpd, NULL, NULL)) {
lwsl_info("%s: Create stream failed (policy?)\n", __func__);
return 1;