From 6539ae13f968132a57a2a2922cc92b71b14c0b65 Mon Sep 17 00:00:00 2001 From: Jessie Murray Date: Sat, 4 Dec 2021 21:15:59 -0800 Subject: [PATCH] Call ws_close_if_able instead of ws_client_free in worker.c Update last call to ws_client_free to use ws_close_if_able instead, from worker.c --- src/websocket.c | 4 ++-- src/websocket.h | 6 +++--- src/worker.c | 2 +- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/websocket.c b/src/websocket.c index fcc6b1d..5d3efe0 100644 --- a/src/websocket.c +++ b/src/websocket.c @@ -113,7 +113,7 @@ ws_client_new(struct http_client *http_client) { return ws; } -void +static void ws_client_free(struct ws_client *ws) { /* mark WS client as closing to skip the Redis callback */ @@ -558,7 +558,7 @@ ws_frame_and_send_response(struct ws_client *ws, enum ws_frame_type frame_type, return ws_schedule_write(ws); } -static void +void ws_close_if_able(struct ws_client *ws) { ws->close_after_events = 1; /* note that we're closing */ diff --git a/src/websocket.h b/src/websocket.h index 8b176a4..0047232 100644 --- a/src/websocket.h +++ b/src/websocket.h @@ -46,9 +46,6 @@ struct ws_client { struct ws_client * ws_client_new(struct http_client *http_client); -void -ws_client_free(struct ws_client *ws); - int ws_handshake_reply(struct ws_client *ws); @@ -61,4 +58,7 @@ ws_process_read_data(struct ws_client *ws, unsigned int *out_processed); int ws_frame_and_send_response(struct ws_client *ws, enum ws_frame_type type, const char *p, size_t sz); +void +ws_close_if_able(struct ws_client *ws); + #endif diff --git a/src/worker.c b/src/worker.c index 5d06cf6..f734652 100644 --- a/src/worker.c +++ b/src/worker.c @@ -79,7 +79,7 @@ worker_can_read(int fd, short event, void *p) { int reply_ret = ws_handshake_reply(c->ws); if(reply_ret < 0) { c->ws->http_client = NULL; /* detach to prevent double free */ - ws_client_free(c->ws); + ws_close_if_able(c->ws); c->broken = 1; } else { unsigned int processed = 0;