diff --git a/src/mod/applications/mod_hash/mod_hash.c b/src/mod/applications/mod_hash/mod_hash.c index b24cab6bc7..a90a3fe4d8 100644 --- a/src/mod/applications/mod_hash/mod_hash.c +++ b/src/mod/applications/mod_hash/mod_hash.c @@ -279,7 +279,7 @@ SWITCH_LIMIT_RELEASE(limit_release_hash) switch_channel_t *channel = switch_core_session_get_channel(session); limit_hash_private_t *pvt = switch_channel_get_private(channel, "limit_hash"); limit_hash_item_t *item = NULL; - switch_hash_index_t *hi; + switch_hash_index_t *hi = NULL; char *hashkey = NULL; if (!pvt || !pvt->hash) { @@ -291,7 +291,7 @@ SWITCH_LIMIT_RELEASE(limit_release_hash) /* clear for uuid */ if (realm == NULL && resource == NULL) { /* Loop through the channel's hashtable which contains mapping to all the limit_hash_item_t referenced by that channel */ - while ((hi = switch_core_hash_first(pvt->hash))) { + while ((hi = switch_core_hash_first_iter(pvt->hash, hi))) { void *val = NULL; const void *key; switch_ssize_t keylen; @@ -311,6 +311,7 @@ SWITCH_LIMIT_RELEASE(limit_release_hash) switch_core_hash_delete(pvt->hash, (const char *) key); } + switch_core_hash_destroy(&pvt->hash); } else { hashkey = switch_core_session_sprintf(session, "%s_%s", realm, resource);