|
|
@ -225,11 +225,10 @@ int redis_set_timeout(struct redis* r, int timeout) { |
|
|
|
|
|
|
|
|
int redis_reconnect(struct redis* r) { |
|
|
int redis_reconnect(struct redis* r) { |
|
|
int rval; |
|
|
int rval; |
|
|
mutex_lock(&r->lock); |
|
|
|
|
|
|
|
|
LOCK(&r->lock); |
|
|
rval = redis_connect(r,1); |
|
|
rval = redis_connect(r,1); |
|
|
if (rval) |
|
|
if (rval) |
|
|
r->state = REDIS_STATE_DISCONNECTED; |
|
|
r->state = REDIS_STATE_DISCONNECTED; |
|
|
mutex_unlock(&r->lock); |
|
|
|
|
|
return rval; |
|
|
return rval; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
@ -2383,8 +2382,8 @@ char* redis_encode_json(struct call *c) { |
|
|
for (l = c->streams.head; l; l = l->next) { |
|
|
for (l = c->streams.head; l; l = l->next) { |
|
|
ps = l->data; |
|
|
ps = l->data; |
|
|
|
|
|
|
|
|
mutex_lock(&ps->in_lock); |
|
|
|
|
|
mutex_lock(&ps->out_lock); |
|
|
|
|
|
|
|
|
LOCK(&ps->in_lock); |
|
|
|
|
|
LOCK(&ps->out_lock); |
|
|
|
|
|
|
|
|
snprintf(tmp, sizeof(tmp), "stream-%u", ps->unique_id); |
|
|
snprintf(tmp, sizeof(tmp), "stream-%u", ps->unique_id); |
|
|
json_builder_set_member_name(builder, tmp); |
|
|
json_builder_set_member_name(builder, tmp); |
|
|
@ -2410,8 +2409,6 @@ char* redis_encode_json(struct call *c) { |
|
|
json_builder_end_object (builder); |
|
|
json_builder_end_object (builder); |
|
|
|
|
|
|
|
|
// stream_sfds was here before |
|
|
// stream_sfds was here before |
|
|
mutex_unlock(&ps->in_lock); |
|
|
|
|
|
mutex_unlock(&ps->out_lock); |
|
|
|
|
|
|
|
|
|
|
|
} // --- for streams.head |
|
|
} // --- for streams.head |
|
|
|
|
|
|
|
|
@ -2420,8 +2417,8 @@ char* redis_encode_json(struct call *c) { |
|
|
ps = l->data; |
|
|
ps = l->data; |
|
|
// XXX these should all go into the above loop |
|
|
// XXX these should all go into the above loop |
|
|
|
|
|
|
|
|
mutex_lock(&ps->in_lock); |
|
|
|
|
|
mutex_lock(&ps->out_lock); |
|
|
|
|
|
|
|
|
LOCK(&ps->in_lock); |
|
|
|
|
|
LOCK(&ps->out_lock); |
|
|
|
|
|
|
|
|
snprintf(tmp, sizeof(tmp), "stream_sfds-%u", ps->unique_id); |
|
|
snprintf(tmp, sizeof(tmp), "stream_sfds-%u", ps->unique_id); |
|
|
json_builder_set_member_name(builder, tmp); |
|
|
json_builder_set_member_name(builder, tmp); |
|
|
@ -2451,9 +2448,6 @@ char* redis_encode_json(struct call *c) { |
|
|
JSON_ADD_STRING("%u", sink->unique_id); |
|
|
JSON_ADD_STRING("%u", sink->unique_id); |
|
|
} |
|
|
} |
|
|
json_builder_end_array (builder); |
|
|
json_builder_end_array (builder); |
|
|
|
|
|
|
|
|
mutex_unlock(&ps->in_lock); |
|
|
|
|
|
mutex_unlock(&ps->out_lock); |
|
|
|
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@ -2685,7 +2679,7 @@ void redis_update_onekey(struct call *c, struct redis *r) { |
|
|
if (c->foreign_call) |
|
|
if (c->foreign_call) |
|
|
return; |
|
|
return; |
|
|
|
|
|
|
|
|
mutex_lock(&r->lock); |
|
|
|
|
|
|
|
|
LOCK(&r->lock); |
|
|
// coverity[sleep : FALSE] |
|
|
// coverity[sleep : FALSE] |
|
|
if (redis_check_conn(r) == REDIS_STATE_DISCONNECTED) { |
|
|
if (redis_check_conn(r) == REDIS_STATE_DISCONNECTED) { |
|
|
mutex_unlock(&r->lock); |
|
|
mutex_unlock(&r->lock); |
|
|
@ -2713,7 +2707,6 @@ void redis_update_onekey(struct call *c, struct redis *r) { |
|
|
|
|
|
|
|
|
if (result) |
|
|
if (result) |
|
|
free(result); |
|
|
free(result); |
|
|
mutex_unlock(&r->lock); |
|
|
|
|
|
rwlock_unlock_r(&c->master_lock); |
|
|
rwlock_unlock_r(&c->master_lock); |
|
|
|
|
|
|
|
|
return; |
|
|
return; |
|
|
@ -2723,7 +2716,6 @@ err: |
|
|
redisFree(r->ctx); |
|
|
redisFree(r->ctx); |
|
|
r->ctx = NULL; |
|
|
r->ctx = NULL; |
|
|
|
|
|
|
|
|
mutex_unlock(&r->lock); |
|
|
|
|
|
rwlock_unlock_r(&c->master_lock); |
|
|
rwlock_unlock_r(&c->master_lock); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
@ -2736,15 +2728,14 @@ void redis_delete(struct call *c, struct redis *r) { |
|
|
return; |
|
|
return; |
|
|
|
|
|
|
|
|
if (delete_async) { |
|
|
if (delete_async) { |
|
|
mutex_lock(&r->async_lock); |
|
|
|
|
|
|
|
|
LOCK(&r->async_lock); |
|
|
rwlock_lock_r(&c->master_lock); |
|
|
rwlock_lock_r(&c->master_lock); |
|
|
redis_delete_async_call_json(c, r); |
|
|
redis_delete_async_call_json(c, r); |
|
|
rwlock_unlock_r(&c->master_lock); |
|
|
rwlock_unlock_r(&c->master_lock); |
|
|
mutex_unlock(&r->async_lock); |
|
|
|
|
|
return; |
|
|
return; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
mutex_lock(&r->lock); |
|
|
|
|
|
|
|
|
LOCK(&r->lock); |
|
|
// coverity[sleep : FALSE] |
|
|
// coverity[sleep : FALSE] |
|
|
if (redis_check_conn(r) == REDIS_STATE_DISCONNECTED) { |
|
|
if (redis_check_conn(r) == REDIS_STATE_DISCONNECTED) { |
|
|
mutex_unlock(&r->lock); |
|
|
mutex_unlock(&r->lock); |
|
|
@ -2758,7 +2749,6 @@ void redis_delete(struct call *c, struct redis *r) { |
|
|
redis_delete_call_json(c, r); |
|
|
redis_delete_call_json(c, r); |
|
|
|
|
|
|
|
|
rwlock_unlock_r(&c->master_lock); |
|
|
rwlock_unlock_r(&c->master_lock); |
|
|
mutex_unlock(&r->lock); |
|
|
|
|
|
return; |
|
|
return; |
|
|
|
|
|
|
|
|
err: |
|
|
err: |
|
|
@ -2768,7 +2758,6 @@ err: |
|
|
r->ctx = NULL; |
|
|
r->ctx = NULL; |
|
|
|
|
|
|
|
|
rwlock_unlock_r(&c->master_lock); |
|
|
rwlock_unlock_r(&c->master_lock); |
|
|
mutex_unlock(&r->lock); |
|
|
|
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@ -2779,12 +2768,11 @@ void redis_wipe(struct redis *r) { |
|
|
if (!r) |
|
|
if (!r) |
|
|
return; |
|
|
return; |
|
|
|
|
|
|
|
|
mutex_lock(&r->lock); |
|
|
|
|
|
|
|
|
LOCK(&r->lock); |
|
|
// coverity[sleep : FALSE] |
|
|
// coverity[sleep : FALSE] |
|
|
if (redis_check_conn(r) == REDIS_STATE_DISCONNECTED) { |
|
|
if (redis_check_conn(r) == REDIS_STATE_DISCONNECTED) { |
|
|
mutex_unlock(&r->lock); |
|
|
mutex_unlock(&r->lock); |
|
|
return ; |
|
|
return ; |
|
|
} |
|
|
} |
|
|
redisCommandNR(r->ctx, "DEL calls"); |
|
|
redisCommandNR(r->ctx, "DEL calls"); |
|
|
mutex_unlock(&r->lock); |
|
|
|
|
|
} |
|
|
} |