From d904fb2fe511760a9dac650cd67d2f3f072f898a Mon Sep 17 00:00:00 2001 From: Frederic-Philippe Metz Date: Wed, 22 Feb 2017 10:16:15 +0100 Subject: [PATCH] Removes 'json-' prefix from redis key (callid) --- daemon/redis.c | 46 ++++++++++++++++++---------------------------- 1 file changed, 18 insertions(+), 28 deletions(-) diff --git a/daemon/redis.c b/daemon/redis.c index ec2b6af6e..b9a0b6a16 100644 --- a/daemon/redis.c +++ b/daemon/redis.c @@ -284,13 +284,8 @@ void on_redis_notification(redisAsyncContext *actx, void *reply, void *privdata) goto err; if (keyspace_id.s[-1] != ':') goto err; - // now at - - if (str_shift_cmp(&keyspace_id, "json-")) { - rlog(LOG_ERROR,"Redis-Notifier: The prefix 'json-' to determine the redis key has not been found in the redis notification !\n"); - goto err; - } + // now at callid = keyspace_id; // select the right db for restoring the call @@ -458,13 +453,13 @@ int redis_notify_subscribe_action(struct callmaster *cm, enum subscribe_action a switch (action) { case SUBSCRIBE_KEYSPACE: - if (redisAsyncCommand(cm->conf.redis_notify_async_context, on_redis_notification, (void*)cm, "psubscribe __keyspace@%i__:json-*", keyspace) != REDIS_OK) { + if (redisAsyncCommand(cm->conf.redis_notify_async_context, on_redis_notification, (void*)cm, "psubscribe __keyspace@%i__:*", keyspace) != REDIS_OK) { rlog(LOG_ERROR, "Fail redisAsyncCommand on JSON SUBSCRIBE_KEYSPACE"); return -1; } break; case UNSUBSCRIBE_KEYSPACE: - if (redisAsyncCommand(cm->conf.redis_notify_async_context, on_redis_notification, (void*)cm, "punsubscribe __keyspace@%i__:json-*", keyspace) != REDIS_OK) { + if (redisAsyncCommand(cm->conf.redis_notify_async_context, on_redis_notification, (void*)cm, "punsubscribe __keyspace@%i__:*", keyspace) != REDIS_OK) { rlog(LOG_ERROR, "Fail redisAsyncCommand on JSON UNSUBSCRIBE_KEYSPACE"); return -1; } @@ -687,7 +682,7 @@ static int redis_check_conn(struct redis *r) { /* called with r->lock held and c->master_lock held */ static void redis_delete_call_json(struct call *c, struct redis *r) { - redis_pipe(r, "DEL json-"PB"", STR(&c->callid)); + redis_pipe(r, "DEL "PB"", STR(&c->callid)); redis_consume(r); } @@ -1391,26 +1386,21 @@ static int json_link_maps(struct redis *r, struct call *c, struct redis_list *ma return 0; } -static void json_restore_call(struct redis *r, struct callmaster *m, const str *id, enum call_type type) { +static void json_restore_call(struct redis *r, struct callmaster *m, const str *callid, enum call_type type) { redisReply* rr_jsonStr; struct redis_hash call; struct redis_list tags, sfds, streams, medias, maps; struct call *c = NULL; - str callid; - str s; + str s, id; const char *err = 0; int i; JsonReader *root_reader =0; JsonParser *parser =0; - // TODO: Maybe refactor - str_init_len(&callid, id->s, id->len); - str_shift(&callid,strlen("json-")); - - rr_jsonStr = redis_get(r, REDIS_REPLY_STRING, "GET json-" PB, STR(&callid)); + rr_jsonStr = redis_get(r, REDIS_REPLY_STRING, "GET " PB, STR(callid)); if (!rr_jsonStr) { - rlog(LOG_ERR, "Could not retrieve json data from redis for key: %s", id->s); + rlog(LOG_ERR, "Could not retrieve json data from redis for key: %s", callid->s); goto err1; } @@ -1425,7 +1415,7 @@ static void json_restore_call(struct redis *r, struct callmaster *m, const str * goto err1; } - c = call_get_or_create(&callid, m, type); + c = call_get_or_create(callid, m, type); err = "failed to create call struct"; if (!c) goto err1; @@ -1467,10 +1457,10 @@ static void json_restore_call(struct redis *r, struct callmaster *m, const str * c->tos = i; redis_hash_get_time_t(&c->deleted, &call, "deleted"); redis_hash_get_time_t(&c->ml_deleted, &call, "ml_deleted"); - if (!redis_hash_get_str(&callid, &call, "created_from")) - c->created_from = call_strdup(c, callid.s); - if (!redis_hash_get_str(&callid, &call, "created_from_addr")) - sockaddr_parse_any_str(&c->created_from_addr, &callid); + if (!redis_hash_get_str(&id, &call, "created_from")) + c->created_from = call_strdup(c, id.s); + if (!redis_hash_get_str(&id, &call, "created_from_addr")) + sockaddr_parse_any_str(&c->created_from_addr, &id); err = "missing 'redis_hosted_db' value"; if (redis_hash_get_unsigned((unsigned int *) &c->redis_hosted_db, &call, "redis_hosted_db")) @@ -1541,12 +1531,12 @@ err1: freeReplyObject(rr_jsonStr); log_info_clear(); if (err) { - rlog(LOG_WARNING, "Failed to restore call ID '" STR_FORMAT "' from Redis: %s", STR_FMT(&callid), + rlog(LOG_WARNING, "Failed to restore call ID '" STR_FORMAT "' from Redis: %s", STR_FMT(callid), err); if (c) call_destroy(c); else - redisCommandNR(m->conf.redis_write->ctx, "DEL json-" PB, STR(&callid)); + redisCommandNR(m->conf.redis_write->ctx, "DEL " PB, STR(callid)); } if (c) obj_put(c); @@ -1599,7 +1589,7 @@ int redis_restore(struct callmaster *m, struct redis *r) { } mutex_unlock(&r->lock); - calls = redis_get(r, REDIS_REPLY_ARRAY, "KEYS json-*"); + calls = redis_get(r, REDIS_REPLY_ARRAY, "KEYS *"); if (!calls) { rlog(LOG_ERR, "Could not retrieve call list from Redis: %s", r->ctx->errstr); @@ -2038,8 +2028,8 @@ void redis_update_onekey(struct call *c, struct redis *r) { if (!result) goto err; - redis_pipe(r, "SET json-"PB" %s", STR(&c->callid), result); - redis_pipe(r, "EXPIRE json-"PB" %i", STR(&c->callid), redis_expires_s); + redis_pipe(r, "SET "PB" %s", STR(&c->callid), result); + redis_pipe(r, "EXPIRE "PB" %i", STR(&c->callid), redis_expires_s); redis_consume(r);