Browse Source

determine master/slave status on startup

git.mgm/mediaproxy-ng/2.0
Richard Fuchs 15 years ago
parent
commit
4a86ab734c
2 changed files with 22 additions and 1 deletions
  1. +1
    -0
      daemon/main.c
  2. +21
    -1
      daemon/redis.c

+ 1
- 0
daemon/main.c View File

@ -255,6 +255,7 @@ int main(int argc, char **argv) {
m->redis = redis_new(redis_ip, redis_port, redis_key);
if (!m->redis)
die("Failed to connect to Redis database\n");
mylog(LOG_INFO, "Connected to Redis\n");
}
mylog(LOG_INFO, "Startup complete");


+ 21
- 1
daemon/redis.c View File

@ -15,6 +15,7 @@ struct redis *redis_new(u_int32_t ip, u_int16_t port, char *key) {
struct redis *r;
struct timeval tv;
redisReply *rp;
char *s;
r = malloc(sizeof(*r));
ZERO(*r);
@ -37,10 +38,29 @@ struct redis *redis_new(u_int32_t ip, u_int16_t port, char *key) {
goto err;
freeReplyObject(rp);
rp = redisCommand(r->ctx, "INFO");
if (!rp)
goto err;
s = strstr(rp->str, "role:");
if (!s) {
freeReplyObject(rp);
goto err;
}
if (!memcmp(s, "role:master", 9))
r->active = 1;
else if (!memcmp(s, "role:slave", 8))
; /* it's already 0 */
else {
mylog(LOG_ERR, "Unable to determine Redis master/slave state\n");
freeReplyObject(rp);
goto err;
}
freeReplyObject(rp);
return r;
err:
if (r->ctx && r->ctx->errstr)
if (r->ctx && r->ctx->err && r->ctx->errstr)
mylog(LOG_CRIT, "Redis error: %s\n", r->ctx->errstr);
if (r->ctx)
redisFree(r->ctx);


Loading…
Cancel
Save