]> git.saurik.com Git - redis.git/commitdiff
Fixed a bug with replication where SLAVEOF NO ONE caused a slave to close the connect...
authorantirez <antirez@gmail.com>
Fri, 29 Apr 2011 12:18:16 +0000 (14:18 +0200)
committerantirez <antirez@gmail.com>
Fri, 29 Apr 2011 12:18:16 +0000 (14:18 +0200)
src/networking.c

index 32d071bdecffe6b50532507be2c2988f4678d0a6..29eed88866fb11d26094021cd3a01bb7ad0dd697 100644 (file)
@@ -526,10 +526,16 @@ void freeClient(redisClient *c) {
          * close the connection with all our slaves if we have any, so
          * when we'll resync with the master the other slaves will sync again
          * with us as well. Note that also when the slave is not connected
-         * to the master it will keep refusing connections by other slaves. */
-        while (listLength(server.slaves)) {
-            ln = listFirst(server.slaves);
-            freeClient((redisClient*)ln->value);
+         * to the master it will keep refusing connections by other slaves.
+         *
+         * We do this only if server.masterhost != NULL. If it is NULL this
+         * means the user called SLAVEOF NO ONE and we are freeing our
+         * link with the master, so no need to close link with slaves. */
+        if (server.masterhost != NULL) {
+            while (listLength(server.slaves)) {
+                ln = listFirst(server.slaves);
+                freeClient((redisClient*)ln->value);
+            }
         }
     }
     /* Release memory */