From 1a17cdfadf43ae6179dc7556caae579436066a2f Mon Sep 17 00:00:00 2001 From: antirez Date: Fri, 30 Nov 2018 16:31:02 +0100 Subject: [PATCH] RESP3: addReplyNullArray() added for better RESP2 compat. --- src/networking.c | 12 ++++++++++++ src/server.h | 1 + 2 files changed, 13 insertions(+) diff --git a/src/networking.c b/src/networking.c index 72f44f07..8be22629 100644 --- a/src/networking.c +++ b/src/networking.c @@ -611,6 +611,18 @@ void addReplyNull(client *c) { } } +/* A null array is a concept that no longer exists in RESP3. However + * RESP2 had it, so API-wise we have this call, that will emit the correct + * RESP2 protocol, however for RESP3 the reply will always be just the + * Null type "_\r\n". */ +void addReplyNullArray(client *c) { + if (c->resp == 2) { + addReplyString(c,"*-1\r\n",5); + } else { + addReplyString(c,"_\r\n",3); + } +} + /* Create the length prefix of a bulk reply, example: $2234 */ void addReplyBulkLen(client *c, robj *obj) { size_t len; diff --git a/src/server.h b/src/server.h index 2958c635..d4558df5 100644 --- a/src/server.h +++ b/src/server.h @@ -1438,6 +1438,7 @@ void acceptTcpHandler(aeEventLoop *el, int fd, void *privdata, int mask); void acceptUnixHandler(aeEventLoop *el, int fd, void *privdata, int mask); void readQueryFromClient(aeEventLoop *el, int fd, void *privdata, int mask); void addReplyNull(client *c); +void addReplyNullArray(client *c); void addReplyString(client *c, const char *s, size_t len); void addReplyBulk(client *c, robj *obj); void addReplyBulkCString(client *c, const char *s);