From 4bf40ca920d7e8ddd247c929f303ee3e7553e38e Mon Sep 17 00:00:00 2001 From: majklik Date: Sat, 1 Jan 2022 22:15:07 +0100 Subject: [PATCH 1/4] Update json.c Treat a case of premature termination of a websocket connection. --- src/formats/json.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/formats/json.c b/src/formats/json.c index 0cbcb527..1f738b31 100644 --- a/src/formats/json.c +++ b/src/formats/json.c @@ -20,6 +20,8 @@ json_reply(redisAsyncContext *c, void *r, void *privdata) { char *jstr; (void)c; + if (c->c.flags & REDIS_DISCONNECTING) return; /* closing connection */ + if(cmd == NULL) { /* broken connection */ return; From 189a3242f02125e7873f60217f9285282282b626 Mon Sep 17 00:00:00 2001 From: majklik Date: Sat, 1 Jan 2022 22:16:28 +0100 Subject: [PATCH 2/4] Update raw.c Treat a case of premature termination of a websocket connection. --- src/formats/raw.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/formats/raw.c b/src/formats/raw.c index 77005e6e..52f4a0a6 100644 --- a/src/formats/raw.c +++ b/src/formats/raw.c @@ -20,6 +20,8 @@ raw_reply(redisAsyncContext *c, void *r, void *privdata) { size_t sz; (void)c; + if (c->c.flags & REDIS_DISCONNECTING) return; /* closing connection */ + if (reply == NULL) { /* broken Redis link */ format_send_error(cmd, 503, "Service Unavailable"); return; From 18311a1fb301d7de48a39fc8d2d0e6b6fe2914cf Mon Sep 17 00:00:00 2001 From: majklik Date: Sun, 2 Jan 2022 11:33:39 +0100 Subject: [PATCH 3/4] Update json.c A better position for disconnect check. --- src/formats/json.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/formats/json.c b/src/formats/json.c index 1f738b31..e66cdd33 100644 --- a/src/formats/json.c +++ b/src/formats/json.c @@ -20,8 +20,6 @@ json_reply(redisAsyncContext *c, void *r, void *privdata) { char *jstr; (void)c; - if (c->c.flags & REDIS_DISCONNECTING) return; /* closing connection */ - if(cmd == NULL) { /* broken connection */ return; @@ -32,6 +30,11 @@ json_reply(redisAsyncContext *c, void *r, void *privdata) { return; } + if(c->c.flags & REDIS_DISCONNECTING) { + /* closing connection */ + return; + } + /* encode redis reply as JSON */ j = json_wrap_redis_reply(cmd, r); From e3199ad0e768ecbec4c2cf6c51e51ab0c23b7f98 Mon Sep 17 00:00:00 2001 From: majklik Date: Sun, 2 Jan 2022 11:34:35 +0100 Subject: [PATCH 4/4] Update raw.c A better positon for disconnect check. --- src/formats/raw.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/formats/raw.c b/src/formats/raw.c index 52f4a0a6..6b81cc8a 100644 --- a/src/formats/raw.c +++ b/src/formats/raw.c @@ -20,13 +20,16 @@ raw_reply(redisAsyncContext *c, void *r, void *privdata) { size_t sz; (void)c; - if (c->c.flags & REDIS_DISCONNECTING) return; /* closing connection */ - if (reply == NULL) { /* broken Redis link */ format_send_error(cmd, 503, "Service Unavailable"); return; } + if(c->c.flags & REDIS_DISCONNECTING) { + /* closing connection */ + return; + } + raw_out = raw_wrap(r, &sz); /* send reply */