summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorantirez <antirez@gmail.com>2013-12-03 13:54:06 +0100
committerantirez <antirez@gmail.com>2013-12-03 13:54:15 +0100
commit3d7263aa41d204a4c1cdeac73a672e26a909372a (patch)
tree91668539330bba2387b8c39203e3460f4ae1d712
parent333453646c3b6e3b20af0223a68c04914a479f39 (diff)
downloadredis-3d7263aa41d204a4c1cdeac73a672e26a909372a.tar.gz
Removed old comments and dead code from freeClient().
-rw-r--r--src/networking.c26
-rw-r--r--src/redis.h2
2 files changed, 14 insertions, 14 deletions
diff --git a/src/networking.c b/src/networking.c
index 8be62b54a..5ee0b288d 100644
--- a/src/networking.c
+++ b/src/networking.c
@@ -100,9 +100,7 @@ redisClient *createClient(int fd) {
c->bpop.keys = dictCreate(&setDictType,NULL);
c->bpop.timeout = 0;
c->bpop.target = NULL;
- c->io_keys = listCreate();
c->watched_keys = listCreate();
- listSetFreeMethod(c->io_keys,decrRefCountVoid);
c->pubsub_channels = dictCreate(&setDictType,NULL);
c->pubsub_patterns = listCreate();
listSetFreeMethod(c->pubsub_patterns,decrRefCountVoid);
@@ -650,13 +648,11 @@ void freeClient(redisClient *c) {
return;
}
- /* Note that if the client we are freeing is blocked into a blocking
- * call, we have to set querybuf to NULL *before* to call
- * unblockClientWaitingData() to avoid processInputBuffer() will get
- * called. Also it is important to remove the file events after
- * this, because this call adds the READABLE event. */
+ /* Free the query buffer */
sdsfree(c->querybuf);
c->querybuf = NULL;
+
+ /* Deallocate structures used to block on blocking ops. */
if (c->flags & REDIS_BLOCKED)
unblockClientWaitingData(c);
dictRelease(c->bpop.keys);
@@ -664,11 +660,13 @@ void freeClient(redisClient *c) {
/* UNWATCH all the keys */
unwatchAllKeys(c);
listRelease(c->watched_keys);
+
/* Unsubscribe from all the pubsub channels */
pubsubUnsubscribeAllChannels(c,0);
pubsubUnsubscribeAllPatterns(c,0);
dictRelease(c->pubsub_channels);
listRelease(c->pubsub_patterns);
+
/* Close socket, unregister events, and remove list of replies and
* accumulated arguments. */
if (c->fd != -1) {
@@ -678,12 +676,14 @@ void freeClient(redisClient *c) {
}
listRelease(c->reply);
freeClientArgv(c);
+
/* Remove from the list of clients */
if (c->fd != -1) {
ln = listSearchKey(server.clients,c);
redisAssert(ln != NULL);
listDelNode(server.clients,ln);
}
+
/* When client was just unblocked because of a blocking operation,
* remove it from the list of unblocked clients. */
if (c->flags & REDIS_UNBLOCKED) {
@@ -691,9 +691,9 @@ void freeClient(redisClient *c) {
redisAssert(ln != NULL);
listDelNode(server.unblocked_clients,ln);
}
- listRelease(c->io_keys);
- /* Master/slave cleanup.
- * Case 1: we lost the connection with a slave. */
+
+ /* Master/slave cleanup Case 1:
+ * we lost the connection with a slave. */
if (c->flags & REDIS_SLAVE) {
if (c->replstate == REDIS_REPL_SEND_BULK && c->repldbfd != -1)
close(c->repldbfd);
@@ -709,7 +709,8 @@ void freeClient(redisClient *c) {
refreshGoodSlavesCount();
}
- /* Case 2: we lost the connection with the master. */
+ /* Master/slave cleanup Case 2:
+ * we lost the connection with the master. */
if (c->flags & REDIS_MASTER) replicationHandleMasterDisconnection();
/* If this client was scheduled for async freeing we need to remove it
@@ -720,7 +721,8 @@ void freeClient(redisClient *c) {
listDelNode(server.clients_to_close,ln);
}
- /* Release memory */
+ /* Release other dynamically allocated client structure fields,
+ * and finally release the client structure itself. */
if (c->name) decrRefCount(c->name);
zfree(c->argv);
freeClientMultiState(c);
diff --git a/src/redis.h b/src/redis.h
index 68b91c51a..357145902 100644
--- a/src/redis.h
+++ b/src/redis.h
@@ -475,8 +475,6 @@ typedef struct redisClient {
int slave_listening_port; /* As configured with: SLAVECONF listening-port */
multiState mstate; /* MULTI/EXEC state */
blockingState bpop; /* blocking state */
- list *io_keys; /* Keys this client is waiting to be loaded from the
- * swap file in order to continue. */
list *watched_keys; /* Keys WATCHED for MULTI/EXEC CAS */
dict *pubsub_channels; /* channels a client is interested in (SUBSCRIBE) */
list *pubsub_patterns; /* patterns a client is interested in (SUBSCRIBE) */