From 3ec17e31b32bd919400ef271c39fab28e0809b0d Mon Sep 17 00:00:00 2001 From: Leibale Eidelman Date: Wed, 11 May 2022 14:20:26 -0400 Subject: [PATCH] fix legacy mode resp encoder (#2118) * fix legacy mode resp encoder * Update encoder.ts --- packages/client/lib/client/RESP2/encoder.ts | 16 +++++++--------- packages/client/lib/commander.ts | 6 +++++- 2 files changed, 12 insertions(+), 10 deletions(-) diff --git a/packages/client/lib/client/RESP2/encoder.ts b/packages/client/lib/client/RESP2/encoder.ts index be48348a35..217fbc714b 100644 --- a/packages/client/lib/client/RESP2/encoder.ts +++ b/packages/client/lib/client/RESP2/encoder.ts @@ -5,23 +5,21 @@ const CRLF = '\r\n'; export default function encodeCommand(args: RedisCommandArguments): Array { const toWrite: Array = []; - let strings = `*${args.length}${CRLF}`; + let strings = '*' + args.length + CRLF; for (let i = 0; i < args.length; i++) { const arg = args[i]; if (typeof arg === 'string') { - const byteLength = Buffer.byteLength(arg); - strings += `$${byteLength}${CRLF}`; - strings += arg; + strings += '$' + Buffer.byteLength(arg) + CRLF + arg + CRLF; } else if (arg instanceof Buffer) { - toWrite.push(`${strings}$${arg.length}${CRLF}`); - strings = ''; - toWrite.push(arg); + toWrite.push( + strings + '$' + arg.length.toString() + CRLF, + arg + ); + strings = CRLF; } else { throw new TypeError('Invalid argument type'); } - - strings += CRLF; } toWrite.push(strings); diff --git a/packages/client/lib/commander.ts b/packages/client/lib/commander.ts index 3ab8b997d9..661e53cb9b 100644 --- a/packages/client/lib/commander.ts +++ b/packages/client/lib/commander.ts @@ -123,7 +123,11 @@ export function transformCommandArguments( } export function transformLegacyCommandArguments(args: Array): Array { - return args.flat().map(x => x?.toString?.()); + return args.flat().map(arg => { + return typeof arg === 'number' || arg instanceof Date ? + arg.toString() : + arg; + }); } export function transformCommandReply(