clusterGetRandomName() generalized into getRandomHexChars() so that we can use it for the run_id field as well.

This commit is contained in:
antirez
2012-03-08 10:08:44 +01:00
parent 4d3bbf3590
commit 44f508f1a8
3 changed files with 52 additions and 15 deletions

View File

@ -19,20 +19,6 @@ int clusterAddSlot(clusterNode *n, int slot);
* Initialization
* -------------------------------------------------------------------------- */
void clusterGetRandomName(char *p) {
FILE *fp = fopen("/dev/urandom","r");
char *charset = "0123456789abcdef";
int j;
if (fp == NULL || fread(p,REDIS_CLUSTER_NAMELEN,1,fp) == 0) {
for (j = 0; j < REDIS_CLUSTER_NAMELEN; j++)
p[j] = rand();
}
for (j = 0; j < REDIS_CLUSTER_NAMELEN; j++)
p[j] = charset[p[j] & 0x0F];
fclose(fp);
}
int clusterLoadConfig(char *filename) {
FILE *fp = fopen(filename,"r");
char *line;
@ -304,7 +290,7 @@ clusterNode *createClusterNode(char *nodename, int flags) {
if (nodename)
memcpy(node->name, nodename, REDIS_CLUSTER_NAMELEN);
else
clusterGetRandomName(node->name);
getRandomHexChars(node->name, REDIS_CLUSTER_NAMELEN);
node->flags = flags;
memset(node->slots,0,sizeof(node->slots));
node->numslaves = 0;