summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorantirez <antirez@gmail.com>2014-04-24 16:23:03 +0200
committerantirez <antirez@gmail.com>2014-04-28 18:17:02 +0200
commitb008863edbb4f20a067498257aec390424ca2e4f (patch)
tree4ceb041044d182a9957c138dff4a28653b09051c
parent71d71814a9a1abd15e2f50ab60b186e79922238b (diff)
downloadredis-b008863edbb4f20a067498257aec390424ca2e4f.tar.gz
clusterLoadConfig() REDIS_ERR retval semantics refined.
We should return REDIS_ERR to signal we can't read the configuration because there is no config file only after checking errno, othewise we risk to rewrite an existing file that was not accessible for some other reason.
-rw-r--r--src/cluster.c11
1 files changed, 10 insertions, 1 deletions
diff --git a/src/cluster.c b/src/cluster.c
index ecbcc0a92..be0522ca5 100644
--- a/src/cluster.c
+++ b/src/cluster.c
@@ -103,7 +103,16 @@ int clusterLoadConfig(char *filename) {
char *line;
int maxline, j;
- if (fp == NULL) return REDIS_ERR;
+ if (fp == NULL) {
+ if (errno == ENOENT) {
+ return REDIS_ERR;
+ } else {
+ redisLog(REDIS_WARNING,
+ "Loading the cluster node config from %s: %s",
+ filename, strerror(errno));
+ exit(1);
+ }
+ }
/* Check if the file is zero-length: if so return REDIS_ERR to signal
* we have to write the config. */