X-Git-Url: https://git.saurik.com/redis.git/blobdiff_plain/d194905449d7de0a104e773f57eaae78bd09a4c6..d310fbedabd3101505b694f5c25a2e48480a3c2b:/src/replication.c diff --git a/src/replication.c b/src/replication.c index 170bee73..871ce95a 100644 --- a/src/replication.c +++ b/src/replication.c @@ -3,6 +3,7 @@ #include #include #include +#include #include /* ---------------------------------- MASTER -------------------------------- */ @@ -25,24 +26,15 @@ void replicationFeedSlaves(list *slaves, int dictid, robj **argv, int argc) { if (slave->slaveseldb != dictid) { robj *selectcmd; - switch(dictid) { - case 0: selectcmd = shared.select0; break; - case 1: selectcmd = shared.select1; break; - case 2: selectcmd = shared.select2; break; - case 3: selectcmd = shared.select3; break; - case 4: selectcmd = shared.select4; break; - case 5: selectcmd = shared.select5; break; - case 6: selectcmd = shared.select6; break; - case 7: selectcmd = shared.select7; break; - case 8: selectcmd = shared.select8; break; - case 9: selectcmd = shared.select9; break; - default: + if (dictid >= 0 && dictid < REDIS_SHARED_SELECT_CMDS) { + selectcmd = shared.select[dictid]; + incrRefCount(selectcmd); + } else { selectcmd = createObject(REDIS_STRING, sdscatprintf(sdsempty(),"select %d\r\n",dictid)); - selectcmd->refcount = 0; - break; } addReply(slave,selectcmd); + decrRefCount(selectcmd); slave->slaveseldb = dictid; } addReplyMultiBulkLen(slave,argc); @@ -154,6 +146,46 @@ void syncCommand(redisClient *c) { return; } +/* REPLCONF