From 98001bb67a294fdaedc02ef1e728919a5d15f8ef Mon Sep 17 00:00:00 2001 From: Xie Han <63350856@qq.com> Date: Tue, 20 Aug 2024 23:24:23 +0800 Subject: [PATCH] Set redis task error when NOAUTH. --- src/factory/RedisTaskImpl.cc | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/src/factory/RedisTaskImpl.cc b/src/factory/RedisTaskImpl.cc index 87063a71..5004a1b8 100644 --- a/src/factory/RedisTaskImpl.cc +++ b/src/factory/RedisTaskImpl.cc @@ -213,6 +213,13 @@ bool ComplexRedisTask::need_redirect() if (reply->str == NULL) return false; + if (strncasecmp(reply->str, "NOAUTH ", 7) == 0) + { + this->state = WFT_STATE_TASK_ERROR; + this->error = WFT_ERR_REDIS_ACCESS_DENIED; + return false; + } + bool asking = false; if (strncasecmp(reply->str, "ASK ", 4) == 0) asking = true; @@ -316,14 +323,6 @@ protected: return &wrapper_; } - virtual int keep_alive_timeout() - { - if (!is_user_request_) - return this->ComplexRedisTask::keep_alive_timeout(); - - return this->keep_alive_timeo; - } - virtual int first_timeout() { return watching_ ? this->watch_timeo : 0; @@ -385,6 +384,11 @@ ComplexRedisSubscribeTask::SubscribeWrapper::next_in(ProtocolMessage *message) } } } + else if (!task_->watching_) + { + task_->finished_ = true; + return NULL; + } task_->watching_ = true; task_->extract_(task_);