From a79342014d4858c71444f7c13860e7c44088f0a1 Mon Sep 17 00:00:00 2001 From: Andy Green Date: Thu, 25 Feb 2021 21:34:12 +0000 Subject: [PATCH] sspc: only do CREATING if its our first rodeo --- lib/secure-streams/secure-streams-serialize.c | 20 +++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/lib/secure-streams/secure-streams-serialize.c b/lib/secure-streams/secure-streams-serialize.c index eac5956cb..a9e7469bd 100644 --- a/lib/secure-streams/secure-streams-serialize.c +++ b/lib/secure-streams/secure-streams-serialize.c @@ -1233,17 +1233,18 @@ payload_ff: * CREATING now so we'll know the metadata to sync. */ - h->creating_cb_done = 1; - - if (lws_ss_check_next_state(&h->lc, &h->prev_ss_state, - LWSSSCS_CREATING)) - return LWSSSSRET_DESTROY_ME; - - h->prev_ss_state = (uint8_t)LWSSSCS_CREATING; + if (!h->creating_cb_done) { + if (lws_ss_check_next_state(&h->lc, &h->prev_ss_state, + LWSSSCS_CREATING)) + return LWSSSSRET_DESTROY_ME; + h->prev_ss_state = (uint8_t)LWSSSCS_CREATING; + h->creating_cb_done = 1; + } else + h->prev_ss_state = LWSSSCS_DISCONNECTED; if (ssi->state) { n = ssi->state(client_pss_to_userdata(pss), - NULL, LWSSSCS_CREATING, 0); + NULL, h->prev_ss_state, 0); switch (n) { case LWSSSSRET_OK: break; @@ -1422,5 +1423,8 @@ swallow: return LWSSSSRET_OK; hangup: + + lwsl_notice("%s: hangup\n", __func__); + return LWSSSSRET_DISCONNECT_ME; }