From b70aa4e470a8b3dbad731d677c6351bac6b8273b Mon Sep 17 00:00:00 2001 From: leibale Date: Thu, 9 Dec 2021 02:48:10 -0500 Subject: [PATCH] fix for e11256854e8983db6470377c4a6056ff801ca066 - should not retry connecting if failed due to wrong auth --- packages/client/lib/client/index.ts | 6 ++++-- packages/client/lib/client/socket.ts | 7 ++++++- packages/client/lib/errors.ts | 6 ++++++ 3 files changed, 16 insertions(+), 3 deletions(-) diff --git a/packages/client/lib/client/index.ts b/packages/client/lib/client/index.ts index d3655b0341..3bbf14a116 100644 --- a/packages/client/lib/client/index.ts +++ b/packages/client/lib/client/index.ts @@ -11,7 +11,7 @@ import { ScanCommandOptions } from '../commands/SCAN'; import { HScanTuple } from '../commands/HSCAN'; import { extendWithCommands, extendWithModulesAndScripts, LegacyCommandArguments, transformCommandArguments, transformCommandReply, transformLegacyCommandArguments } from '../commander'; import { Pool, Options as PoolOptions, createPool } from 'generic-pool'; -import { ClientClosedError, DisconnectsClientError } from '../errors'; +import { ClientClosedError, DisconnectsClientError, AuthError } from '../errors'; import { URL } from 'url'; import { TcpSocketConnectOpts } from 'net'; @@ -219,7 +219,9 @@ export default class RedisClient password: this.#options.password ?? '' }), { asap: true } - ) + ).catch(err => { + throw new AuthError(err.message); + }) ); } diff --git a/packages/client/lib/client/socket.ts b/packages/client/lib/client/socket.ts index 36837bcdb8..effb780a08 100644 --- a/packages/client/lib/client/socket.ts +++ b/packages/client/lib/client/socket.ts @@ -3,7 +3,7 @@ import * as net from 'net'; import * as tls from 'tls'; import { encodeCommand } from '../commander'; import { RedisCommandArguments } from '../commands'; -import { ConnectionTimeoutError, ClientClosedError, SocketClosedUnexpectedlyError } from '../errors'; +import { ConnectionTimeoutError, ClientClosedError, SocketClosedUnexpectedlyError, AuthError } from '../errors'; import { promiseTimeout } from '../utils'; export interface RedisSocketCommonOptions { @@ -110,6 +110,11 @@ export default class RedisSocket extends EventEmitter { } catch (err) { this.#socket.destroy(); this.#socket = undefined; + + if (err instanceof AuthError) { + this.#isOpen = false; + } + throw err; } diff --git a/packages/client/lib/errors.ts b/packages/client/lib/errors.ts index 79a438aa1d..6af7d70744 100644 --- a/packages/client/lib/errors.ts +++ b/packages/client/lib/errors.ts @@ -33,3 +33,9 @@ export class SocketClosedUnexpectedlyError extends Error { super('Socket closed unexpectedly'); } } + +export class AuthError extends Error { + constructor(message: string) { + super(message); + } +}