mirror of
https://github.com/signalwire/freeswitch.git
synced 2025-08-13 17:38:59 +00:00
FS-8978: [mod_redis] Fix limit counter not decrementing on hangup
The limit counter value is not automatically decremented in Redis when the call is hung up. This results in it only ever counting up and the limit being eventually hit. The linked list is moved on too early. When `limit_pvt` is checked, it is `NULL`. This means the `decr` command is never sent to Redis.
This commit is contained in:
@@ -197,13 +197,14 @@ SWITCH_LIMIT_RELEASE(hiredis_limit_release)
|
||||
while (tmp) {
|
||||
profile = switch_core_hash_find(mod_hiredis_globals.profiles, limit_pvt->realm);
|
||||
hashkey = switch_mprintf("decr %s", tmp->limit_key);
|
||||
limit_pvt = tmp->next;
|
||||
|
||||
if ( limit_pvt && (limit_pvt->interval > 0) && (hiredis_profile_execute_sync(profile, hashkey, &response) != SWITCH_STATUS_SUCCESS)) {
|
||||
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "hiredis: profile[%s] error executing [%s] because [%s]\n",
|
||||
tmp->realm, hashkey, response);
|
||||
}
|
||||
|
||||
limit_pvt = tmp->next;
|
||||
|
||||
tmp = limit_pvt;
|
||||
switch_safe_free(response);
|
||||
switch_safe_free(hashkey);
|
||||
|
Reference in New Issue
Block a user