diff --git a/lib/client-parser.c b/lib/client-parser.c index f99592e5..d12c3994 100644 --- a/lib/client-parser.c +++ b/lib/client-parser.c @@ -500,6 +500,9 @@ ping_drop: eff_buf.token = &wsi->u.ws.rx_ubuf[LWS_PRE]; eff_buf.token_len = wsi->u.ws.rx_ubuf_head; + if (wsi->u.ws.opcode == LWSWSOPC_PONG && !eff_buf.token_len) + goto already_done; + drain_extension: lwsl_ext("%s: passing %d to ext\n", __func__, eff_buf.token_len); diff --git a/lib/parsers.c b/lib/parsers.c index f67ede0b..85666e6b 100644 --- a/lib/parsers.c +++ b/lib/parsers.c @@ -1556,6 +1556,9 @@ ping_drop: eff_buf.token = &wsi->u.ws.rx_ubuf[LWS_PRE]; eff_buf.token_len = wsi->u.ws.rx_ubuf_head; + if (wsi->u.ws.opcode == LWSWSOPC_PONG && !eff_buf.token_len) + goto already_done; + drain_extension: lwsl_ext("%s: passing %d to ext\n", __func__, eff_buf.token_len);