diff --git a/lib/secure-streams/protocols/ss-h1.c b/lib/secure-streams/protocols/ss-h1.c index ee294dd8b..0877c5a8f 100644 --- a/lib/secure-streams/protocols/ss-h1.c +++ b/lib/secure-streams/protocols/ss-h1.c @@ -650,9 +650,11 @@ secstream_h1(struct lws *wsi, enum lws_callback_reasons reason, void *user, if (h->prev_ss_state != LWSSSCS_CONNECTED) { wsi->client_suppress_CONNECTION_ERROR = 1; - r = lws_ss_event_helper(h, LWSSSCS_CONNECTED); - if (r != LWSSSSRET_OK) - return _lws_ss_handle_state_ret_CAN_DESTROY_HANDLE(r, wsi, &h); + if (h->prev_ss_state != LWSSSCS_CONNECTED) { + r = lws_ss_event_helper(h, LWSSSCS_CONNECTED); + if (r != LWSSSSRET_OK) + return _lws_ss_handle_state_ret_CAN_DESTROY_HANDLE(r, wsi, &h); + } } /* @@ -829,9 +831,11 @@ malformed: !strcmp(h->policy->u.http.method, "POST"))) { wsi->client_suppress_CONNECTION_ERROR = 1; - r = lws_ss_event_helper(h, LWSSSCS_CONNECTED); - if (r) - return _lws_ss_handle_state_ret_CAN_DESTROY_HANDLE(r, wsi, &h); + if (h->prev_ss_state != LWSSSCS_CONNECTED) { + r = lws_ss_event_helper(h, LWSSSCS_CONNECTED); + if (r) + return _lws_ss_handle_state_ret_CAN_DESTROY_HANDLE(r, wsi, &h); + } } break; @@ -1100,9 +1104,11 @@ malformed: lws_metrics_caliper_report_hist(h->cal_txn, (struct lws *)NULL); #endif wsi->client_suppress_CONNECTION_ERROR = 1; - r = lws_ss_event_helper(h, LWSSSCS_CONNECTED); - if (r) - return _lws_ss_handle_state_ret_CAN_DESTROY_HANDLE(r, wsi, &h); + if (h->prev_ss_state != LWSSSCS_CONNECTED) { + r = lws_ss_event_helper(h, LWSSSCS_CONNECTED); + if (r) + return _lws_ss_handle_state_ret_CAN_DESTROY_HANDLE(r, wsi, &h); + } } r = lws_ss_event_helper(h, LWSSSCS_SERVER_TXN);