mirror of
https://github.com/fluencelabs/redis
synced 2025-05-30 18:51:19 +00:00
Exit with Fatal error at startup if the RDB file signature or version is wrong.
Ref: issue #103
This commit is contained in:
parent
8185c2e9f1
commit
a4f46f211c
@ -937,18 +937,23 @@ int rdbLoad(char *filename) {
|
|||||||
long loops = 0;
|
long loops = 0;
|
||||||
|
|
||||||
fp = fopen(filename,"r");
|
fp = fopen(filename,"r");
|
||||||
if (!fp) return REDIS_ERR;
|
if (!fp) {
|
||||||
|
errno = ENOENT;
|
||||||
|
return REDIS_ERR;
|
||||||
|
}
|
||||||
if (fread(buf,9,1,fp) == 0) goto eoferr;
|
if (fread(buf,9,1,fp) == 0) goto eoferr;
|
||||||
buf[9] = '\0';
|
buf[9] = '\0';
|
||||||
if (memcmp(buf,"REDIS",5) != 0) {
|
if (memcmp(buf,"REDIS",5) != 0) {
|
||||||
fclose(fp);
|
fclose(fp);
|
||||||
redisLog(REDIS_WARNING,"Wrong signature trying to load DB from file");
|
redisLog(REDIS_WARNING,"Wrong signature trying to load DB from file");
|
||||||
|
errno = EINVAL;
|
||||||
return REDIS_ERR;
|
return REDIS_ERR;
|
||||||
}
|
}
|
||||||
rdbver = atoi(buf+5);
|
rdbver = atoi(buf+5);
|
||||||
if (rdbver < 1 || rdbver > 2) {
|
if (rdbver < 1 || rdbver > 2) {
|
||||||
fclose(fp);
|
fclose(fp);
|
||||||
redisLog(REDIS_WARNING,"Can't handle RDB format version %d",rdbver);
|
redisLog(REDIS_WARNING,"Can't handle RDB format version %d",rdbver);
|
||||||
|
errno = EINVAL;
|
||||||
return REDIS_ERR;
|
return REDIS_ERR;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1651,8 +1651,13 @@ int main(int argc, char **argv) {
|
|||||||
if (loadAppendOnlyFile(server.appendfilename) == REDIS_OK)
|
if (loadAppendOnlyFile(server.appendfilename) == REDIS_OK)
|
||||||
redisLog(REDIS_NOTICE,"DB loaded from append only file: %ld seconds",time(NULL)-start);
|
redisLog(REDIS_NOTICE,"DB loaded from append only file: %ld seconds",time(NULL)-start);
|
||||||
} else {
|
} else {
|
||||||
if (rdbLoad(server.dbfilename) == REDIS_OK)
|
if (rdbLoad(server.dbfilename) == REDIS_OK) {
|
||||||
redisLog(REDIS_NOTICE,"DB loaded from disk: %ld seconds",time(NULL)-start);
|
redisLog(REDIS_NOTICE,"DB loaded from disk: %ld seconds",
|
||||||
|
time(NULL)-start);
|
||||||
|
} else if (errno != ENOENT) {
|
||||||
|
redisLog(REDIS_WARNING,"Fatal error loading the DB. Exiting.");
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if (server.ipfd > 0)
|
if (server.ipfd > 0)
|
||||||
redisLog(REDIS_NOTICE,"The server is now ready to accept connections on port %d", server.port);
|
redisLog(REDIS_NOTICE,"The server is now ready to accept connections on port %d", server.port);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user