Skip to content

Commit 11cfcd5

Browse files
authored
server: Reject caching command if tracking is not enabled (#5786)
Signed-off-by: Abhijat Malviya <[email protected]>
1 parent a07a7d1 commit 11cfcd5

File tree

2 files changed

+14
-2
lines changed

2 files changed

+14
-2
lines changed

src/server/server_family.cc

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -476,17 +476,23 @@ void ClientCaching(CmdArgList args, SinkReplyBuilder* builder, Transaction* tx,
476476
return builder->SendError(kSyntaxErr);
477477
}
478478

479+
if (!cntx->conn_state.tracking_info_.IsTrackingOn()) {
480+
return builder->SendError(
481+
"CLIENT CACHING can be called only when the client is in tracking mode with OPTIN or "
482+
"OPTOUT mode enabled");
483+
}
484+
479485
using Tracking = ConnectionState::ClientTracking;
480486
CmdArgParser parser{args};
481487
if (parser.Check("YES")) {
482488
if (!cntx->conn_state.tracking_info_.HasOption(Tracking::OPTIN)) {
483489
return builder->SendError(
484-
"ERR CLIENT CACHING YES is only valid when tracking is enabled in OPTIN mode");
490+
"CLIENT CACHING YES is only valid when tracking is enabled in OPTIN mode");
485491
}
486492
} else if (parser.Check("NO")) {
487493
if (!cntx->conn_state.tracking_info_.HasOption(Tracking::OPTOUT)) {
488494
return builder->SendError(
489-
"ERR CLIENT CACHING NO is only valid when tracking is enabled in OPTOUT mode");
495+
"CLIENT CACHING NO is only valid when tracking is enabled in OPTOUT mode");
490496
}
491497
cntx->conn_state.tracking_info_.ResetCachingSequenceNumber();
492498
} else {

src/server/server_family_test.cc

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -303,6 +303,12 @@ TEST_F(ServerFamilyTest, ClientTrackingOnAndOff) {
303303
// case 3. turn off client tracking
304304
resp = Run({"CLIENT", "TRACKING", "OFF"});
305305
EXPECT_THAT(resp.GetString(), "OK");
306+
307+
resp = Run({"CLIENT", "CACHING", "YES"});
308+
EXPECT_THAT(
309+
resp,
310+
ErrArg("CLIENT CACHING can be called only when the client is in tracking mode with OPTIN or "
311+
"OPTOUT mode enabled"));
306312
}
307313

308314
TEST_F(ServerFamilyTest, ClientTrackingReadKey) {

0 commit comments

Comments
 (0)