mirror of
https://github.com/fluencelabs/redis
synced 2025-04-07 10:01:04 +00:00
CLIENT KILL implemented
This commit is contained in:
parent
3cd12b5687
commit
b93fdb7bbb
@ -870,15 +870,16 @@ void getClientsMaxBuffers(unsigned long *longest_output_list,
|
|||||||
}
|
}
|
||||||
|
|
||||||
void clientCommand(redisClient *c) {
|
void clientCommand(redisClient *c) {
|
||||||
|
listNode *ln;
|
||||||
|
listIter li;
|
||||||
|
redisClient *client;
|
||||||
|
|
||||||
if (!strcasecmp(c->argv[1]->ptr,"list") && c->argc == 2) {
|
if (!strcasecmp(c->argv[1]->ptr,"list") && c->argc == 2) {
|
||||||
listNode *ln;
|
|
||||||
listIter li;
|
|
||||||
sds o = sdsempty();
|
sds o = sdsempty();
|
||||||
time_t now = time(NULL);
|
time_t now = time(NULL);
|
||||||
|
|
||||||
listRewind(server.clients,&li);
|
listRewind(server.clients,&li);
|
||||||
while ((ln = listNext(&li)) != NULL) {
|
while ((ln = listNext(&li)) != NULL) {
|
||||||
redisClient *client;
|
|
||||||
char ip[32], flags[16], *p;
|
char ip[32], flags[16], *p;
|
||||||
int port;
|
int port;
|
||||||
|
|
||||||
@ -911,6 +912,26 @@ void clientCommand(redisClient *c) {
|
|||||||
}
|
}
|
||||||
addReplyBulkCBuffer(c,o,sdslen(o));
|
addReplyBulkCBuffer(c,o,sdslen(o));
|
||||||
sdsfree(o);
|
sdsfree(o);
|
||||||
|
} else if (!strcasecmp(c->argv[1]->ptr,"kill") && c->argc == 3) {
|
||||||
|
listRewind(server.clients,&li);
|
||||||
|
while ((ln = listNext(&li)) != NULL) {
|
||||||
|
char ip[32], addr[64];
|
||||||
|
int port;
|
||||||
|
|
||||||
|
client = listNodeValue(ln);
|
||||||
|
if (anetPeerToString(client->fd,ip,&port) == -1) continue;
|
||||||
|
snprintf(addr,sizeof(addr),"%s:%d",ip,port);
|
||||||
|
if (strcmp(addr,c->argv[2]->ptr) == 0) {
|
||||||
|
addReply(c,shared.ok);
|
||||||
|
if (c == client) {
|
||||||
|
client->flags |= REDIS_CLOSE_AFTER_REPLY;
|
||||||
|
} else {
|
||||||
|
freeClient(client);
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
addReplyError(c,"No such client");
|
||||||
} else {
|
} else {
|
||||||
addReplyError(c, "Syntax error, try CLIENT (LIST | KILL ip:port)");
|
addReplyError(c, "Syntax error, try CLIENT (LIST | KILL ip:port)");
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user