]> git.saurik.com Git - redis.git/commitdiff
Merge git://github.com/lucsky/redis
authorantirez <antirez@gmail.com>
Mon, 23 Mar 2009 16:21:33 +0000 (17:21 +0100)
committerantirez <antirez@gmail.com>
Mon, 23 Mar 2009 16:21:33 +0000 (17:21 +0100)
.gitignore [new file with mode: 0644]
redis-cli.c
redis.c
redis.conf

diff --git a/.gitignore b/.gitignore
new file mode 100644 (file)
index 0000000..973ee7e
--- /dev/null
@@ -0,0 +1,5 @@
+*.o
+*.rdb
+redis-cli
+redis-server
+redis-benchmark
index 38c986b34b81e32a757140ef395af698bd7b1c7e..cd106684fbca6152a4fac051e4f048456d710dcd 100644 (file)
@@ -135,11 +135,13 @@ static sds cliReadLine(int fd) {
 
     while(1) {
         char c;
+        ssize_t ret;
 
-        if (read(fd,&c,1) == -1) {
+        ret = read(fd,&c,1);
+        if (ret == -1) {
             sdsfree(line);
             return NULL;
-        } else if (c == '\n') {
+        } else if ((ret == 0) || (c == '\n')) {
             break;
         } else {
             line = sdscatlen(line,&c,1);
diff --git a/redis.c b/redis.c
index e6606f1822adafbb3801d03c4d75d82d0fea1e11..40b9264ecef899e5ccd6919adf44b071eae6e354 100644 (file)
--- a/redis.c
+++ b/redis.c
@@ -171,6 +171,7 @@ struct redisServer {
     int maxidletime;
     int dbnum;
     int daemonize;
+    char *pidfile;
     int bgsaveinprogress;
     struct saveparam *saveparams;
     int saveparamslen;
@@ -715,6 +716,7 @@ static void initServerConfig() {
     server.bindaddr = NULL;
     server.glueoutputbuf = 1;
     server.daemonize = 0;
+    server.pidfile = "/var/run/redis.pid";
     server.dbfilename = "dump.rdb";
     ResetServerSaveParams();
 
@@ -878,6 +880,8 @@ static void loadServerConfig(char *filename) {
             else {
                 err = "argument must be 'yes' or 'no'"; goto loaderr;
             }
+        } else if (!strcmp(argv[0],"pidfile") && argc == 2) {
+          server.pidfile = zstrdup(argv[1]);
         } else {
             err = "Bad directive or wrong number of arguments"; goto loaderr;
         }
@@ -1899,6 +1903,9 @@ static void bgsaveCommand(redisClient *c) {
 static void shutdownCommand(redisClient *c) {
     redisLog(REDIS_WARNING,"User requested shutdown, saving DB...");
     if (saveDb(server.dbfilename) == REDIS_OK) {
+        if (server.daemonize) {
+          unlink(server.pidfile);
+        }
         redisLog(REDIS_WARNING,"Server exit now, bye bye...");
         exit(1);
     } else {
@@ -3033,7 +3040,7 @@ static void daemonize(void) {
         if (fd > STDERR_FILENO) close(fd);
     }
     /* Try to write the pid file */
-    fp = fopen("/var/run/redis.pid","w");
+    fp = fopen(server.pidfile,"w");
     if (fp) {
         fprintf(fp,"%d\n",getpid());
         fclose(fp);
@@ -3056,7 +3063,7 @@ int main(int argc, char **argv) {
         redisLog(REDIS_NOTICE,"DB loaded from disk");
     if (aeCreateFileEvent(server.el, server.fd, AE_READABLE,
         acceptHandler, NULL, NULL) == AE_ERR) oom("creating file event");
-    redisLog(REDIS_NOTICE,"The server is now ready to accept connections");
+    redisLog(REDIS_NOTICE,"The server is now ready to accept connections on port %d", server.port);
     aeMain(server.el);
     aeDeleteEventLoop(server.el);
     return 0;
index 19a9c64019dcdcbc95d16a992d892bafde801613..3727efd5907ae48b37d313a1f92f4188bfc8c5cb 100644 (file)
@@ -4,6 +4,10 @@
 # Note that Redis will write a pid file in /var/run/redis.pid when daemonized.
 daemonize no
 
+# When run as a daemon, Redis write a pid file in /var/run/redis.pid by default.
+# You can specify a custom pid file location here.
+pidfile /var/run/redis.pid
+
 # Accept connections on the specified port, default is 6379
 port 6379