FS-6402 part 2

This commit is contained in:
Anthony Minessale 2014-04-02 03:21:29 +05:00
parent 5110ee8008
commit 7151d6acea
47 changed files with 198 additions and 154 deletions

View File

@ -5530,7 +5530,7 @@ SWITCH_MODULE_SHUTDOWN_FUNCTION(mod_freetdm_shutdown)
void *val;
/* destroy ss7 configs */
for (hi = switch_core_hash_first( globals.ss7_configs); hi; hi = switch_core_hash_next(&hi)) {
for (hi = switch_core_hash_first(globals.ss7_configs); hi; hi = switch_core_hash_next(&hi)) {
switch_core_hash_this(hi, &var, NULL, &val);
ftdm_conf_node_destroy(val);
}

View File

@ -1459,7 +1459,15 @@ SWITCH_DECLARE(void *) switch_core_hash_find_rdlock(_In_ switch_hash_t *hash, _I
\param hash the hashtable to use
\return The element, or NULL if it wasn't found
*/
SWITCH_DECLARE(switch_hash_index_t *) switch_core_hash_first(_In_ switch_hash_t *hash);
SWITCH_DECLARE(switch_hash_index_t *) switch_core_hash_first_iter(_In_ switch_hash_t *hash, switch_hash_index_t *hi);
#define switch_core_hash_first(_h) switch_core_hash_first_iter(_h, NULL)
/*!
\brief tells if a hash is empty
\param hash the hashtable
\return TRUE or FALSE depending on if the hash is empty
*/
SWITCH_DECLARE(switch_bool_t) switch_core_hash_empty(switch_hash_t *hash);
/*!
\brief Gets the next element of a hashtable

View File

@ -190,7 +190,8 @@ switch_hashtable_count(switch_hashtable_t *h);
SWITCH_DECLARE(void)
switch_hashtable_destroy(switch_hashtable_t **h);
SWITCH_DECLARE(switch_hashtable_iterator_t*) switch_hashtable_first(switch_hashtable_t *h);
SWITCH_DECLARE(switch_hashtable_iterator_t*) switch_hashtable_first_iter(switch_hashtable_t *h, switch_hashtable_iterator_t *it);
#define switch_hashtable_first(_h) switch_hashtable_first_iter(_h, NULL)
SWITCH_DECLARE(switch_hashtable_iterator_t*) switch_hashtable_next(switch_hashtable_iterator_t **iP);
SWITCH_DECLARE(void) switch_hashtable_this(switch_hashtable_iterator_t *i, const void **key, switch_ssize_t *klen, void **val);

View File

@ -116,7 +116,7 @@ static switch_status_t do_config(switch_bool_t reload)
{
/* Load up blacklists */
switch_xml_t xml, cfg, lists, list;
switch_hash_index_t *hi;
switch_hash_index_t *hi = NULL;
if (!(xml = switch_xml_open_cfg("mod_blacklist.conf", &cfg, NULL))) {
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Couldn't load configuration section\n");
@ -126,7 +126,7 @@ static switch_status_t do_config(switch_bool_t reload)
switch_mutex_lock(globals.lists_mutex);
/* Destroy any active lists */
while ((hi = switch_core_hash_first( globals.lists))) {
while ((hi = switch_core_hash_first_iter( globals.lists, hi))) {
const void *key;
void *val;
switch_core_hash_this(hi, &key, NULL, &val);
@ -282,7 +282,7 @@ SWITCH_STANDARD_API(blacklist_api_function)
switch_mutex_lock(globals.lists_mutex);
if (switch_file_open(&fd, filename, SWITCH_FOPEN_WRITE | SWITCH_FOPEN_TRUNCATE | SWITCH_FOPEN_CREATE, SWITCH_FPROT_OS_DEFAULT, globals.pool)
== SWITCH_STATUS_SUCCESS) {
for (hi = switch_core_hash_first( bl->list); hi; hi = switch_core_hash_next(&hi)) {
for (hi = switch_core_hash_first(bl->list); hi; hi = switch_core_hash_next(&hi)) {
switch_core_hash_this(hi, &var, NULL, &val);
switch_file_printf(fd, "%s\n", (char *)var);
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "adding %s to the dump file\n", (char *)var);

View File

@ -3198,7 +3198,7 @@ SWITCH_STANDARD_API(cc_config_api_function)
switch_hash_index_t *hi;
stream->write_function(stream, "%s", "name|strategy|moh_sound|time_base_score|tier_rules_apply|tier_rule_wait_second|tier_rule_wait_multiply_level|tier_rule_no_agent_no_wait|discard_abandoned_after|abandoned_resume_allowed|max_wait_time|max_wait_time_with_no_agent|max_wait_time_with_no_agent_time_reached|record_template\n");
switch_mutex_lock(globals.mutex);
for (hi = switch_core_hash_first( globals.queue_hash); hi; hi = switch_core_hash_next(&hi)) {
for (hi = switch_core_hash_first(globals.queue_hash); hi; hi = switch_core_hash_next(&hi)) {
void *val = NULL;
const void *key;
switch_ssize_t keylen;
@ -3251,7 +3251,7 @@ SWITCH_STANDARD_API(cc_config_api_function)
switch_hash_index_t *hi;
int queue_count = 0;
switch_mutex_lock(globals.mutex);
for (hi = switch_core_hash_first( globals.queue_hash); hi; hi = switch_core_hash_next(&hi)) {
for (hi = switch_core_hash_first(globals.queue_hash); hi; hi = switch_core_hash_next(&hi)) {
queue_count++;
}
switch_mutex_unlock(globals.mutex);
@ -3373,7 +3373,7 @@ SWITCH_MODULE_LOAD_FUNCTION(mod_callcenter_load)
Macro expands to: switch_status_t mod_callcenter_shutdown() */
SWITCH_MODULE_SHUTDOWN_FUNCTION(mod_callcenter_shutdown)
{
switch_hash_index_t *hi;
switch_hash_index_t *hi = NULL;
cc_queue_t *queue;
void *val = NULL;
const void *key;
@ -3394,7 +3394,7 @@ SWITCH_MODULE_SHUTDOWN_FUNCTION(mod_callcenter_shutdown)
}
switch_mutex_lock(globals.mutex);
while ((hi = switch_core_hash_first( globals.queue_hash))) {
while ((hi = switch_core_hash_first_iter( globals.queue_hash, hi))) {
switch_core_hash_this(hi, &key, &keylen, &val);
queue = (cc_queue_t *) val;

View File

@ -5291,7 +5291,7 @@ static switch_status_t list_conferences(const char *line, const char *cursor, sw
const void *vvar;
switch_mutex_lock(globals.hash_mutex);
for (hi = switch_core_hash_first( globals.conference_hash); hi; hi = switch_core_hash_next(&hi)) {
for (hi = switch_core_hash_first(globals.conference_hash); hi; hi = switch_core_hash_next(&hi)) {
switch_core_hash_this(hi, &vvar, NULL, &val);
switch_console_push_match(&my_matches, (const char *) vvar);
}
@ -5783,7 +5783,7 @@ static switch_status_t conf_api_sub_list(conference_obj_t *conference, switch_st
if (conference == NULL) {
switch_mutex_lock(globals.hash_mutex);
for (hi = switch_core_hash_first( globals.conference_hash); hi; hi = switch_core_hash_next(&hi)) {
for (hi = switch_core_hash_first(globals.conference_hash); hi; hi = switch_core_hash_next(&hi)) {
int fcount = 0;
switch_core_hash_this(hi, NULL, NULL, &val);
conference = (conference_obj_t *) val;
@ -6262,7 +6262,7 @@ static switch_status_t conf_api_sub_xml_list(conference_obj_t *conference, switc
if (conference == NULL) {
switch_mutex_lock(globals.hash_mutex);
for (hi = switch_core_hash_first( globals.conference_hash); hi; hi = switch_core_hash_next(&hi)) {
for (hi = switch_core_hash_first(globals.conference_hash); hi; hi = switch_core_hash_next(&hi)) {
switch_core_hash_this(hi, NULL, NULL, &val);
conference = (conference_obj_t *) val;

View File

@ -1070,7 +1070,7 @@ SWITCH_MODULE_SHUTDOWN_FUNCTION(mod_directory_shutdown)
switch_mutex_lock(globals.mutex);
while ((hi = switch_core_hash_first( globals.profile_hash))) {
while ((hi = switch_core_hash_first(globals.profile_hash))) {
switch_core_hash_this(hi, &key, &keylen, &val);
profile = (dir_profile_t *) val;

View File

@ -975,7 +975,7 @@ static int node_idle_consumers(fifo_node_t *node)
int total = 0;
switch_mutex_lock(node->mutex);
for (hi = switch_core_hash_first( node->consumer_hash); hi; hi = switch_core_hash_next(&hi)) {
for (hi = switch_core_hash_first(node->consumer_hash); hi; hi = switch_core_hash_next(&hi)) {
switch_core_hash_this(hi, &var, NULL, &val);
session = (switch_core_session_t *) val;
channel = switch_core_session_get_channel(session);
@ -3802,7 +3802,7 @@ static int xml_hash(switch_xml_t xml, switch_hash_t *hash, char *container, char
x_tmp = switch_xml_add_child_d(xml, container, cc_off++);
switch_assert(x_tmp);
for (hi = switch_core_hash_first( hash); hi; hi = switch_core_hash_next(&hi)) {
for (hi = switch_core_hash_first(hash); hi; hi = switch_core_hash_next(&hi)) {
int c_off = 0, d_off = 0;
const char *status;
const char *ts;
@ -3987,7 +3987,7 @@ void dump_hash(switch_hash_t *hash, switch_stream_handle_t *stream)
const void *var;
switch_mutex_lock(globals.mutex);
for (hi = switch_core_hash_first( hash); hi; hi = switch_core_hash_next(&hi)) {
for (hi = switch_core_hash_first(hash); hi; hi = switch_core_hash_next(&hi)) {
switch_core_hash_this(hi, &var, NULL, &val);
stream->write_function(stream, " %s\n", (char *)var);
}
@ -4002,7 +4002,7 @@ void node_dump(switch_stream_handle_t *stream)
fifo_node_t *node;
void *val;
switch_mutex_lock(globals.mutex);
for (hi = switch_core_hash_first( globals.fifo_hash); hi; hi = switch_core_hash_next(&hi)) {
for (hi = switch_core_hash_first(globals.fifo_hash); hi; hi = switch_core_hash_next(&hi)) {
switch_core_hash_this(hi, NULL, NULL, &val);
if ((node = (fifo_node_t *) val)) {
stream->write_function(stream, "node: %s\n"
@ -4100,7 +4100,7 @@ SWITCH_STANDARD_API(fifo_api_function)
switch_assert(x_report);
if (argc < 2) {
for (hi = switch_core_hash_first( globals.fifo_hash); hi; hi = switch_core_hash_next(&hi)) {
for (hi = switch_core_hash_first(globals.fifo_hash); hi; hi = switch_core_hash_next(&hi)) {
switch_core_hash_this(hi, &var, NULL, &val);
node = (fifo_node_t *) val;
@ -4137,7 +4137,7 @@ SWITCH_STANDARD_API(fifo_api_function)
}
} else if (!strcasecmp(argv[0], "count")) {
if (argc < 2) {
for (hi = switch_core_hash_first( globals.fifo_hash); hi; hi = switch_core_hash_next(&hi)) {
for (hi = switch_core_hash_first(globals.fifo_hash); hi; hi = switch_core_hash_next(&hi)) {
switch_core_hash_this(hi, &var, NULL, &val);
node = (fifo_node_t *) val;
switch_mutex_lock(node->update_mutex);
@ -4158,7 +4158,7 @@ SWITCH_STANDARD_API(fifo_api_function)
}
} else if (!strcasecmp(argv[0], "has_outbound")) {
if (argc < 2) {
for (hi = switch_core_hash_first( globals.fifo_hash); hi; hi = switch_core_hash_next(&hi)) {
for (hi = switch_core_hash_first(globals.fifo_hash); hi; hi = switch_core_hash_next(&hi)) {
switch_core_hash_this(hi, &var, NULL, &val);
node = (fifo_node_t *) val;
switch_mutex_lock(node->update_mutex);
@ -4359,7 +4359,7 @@ static switch_status_t load_config(int reload, int del_all)
fifo_node_t *node;
void *val;
switch_mutex_lock(globals.mutex);
for (hi = switch_core_hash_first( globals.fifo_hash); hi; hi = switch_core_hash_next(&hi)) {
for (hi = switch_core_hash_first(globals.fifo_hash); hi; hi = switch_core_hash_next(&hi)) {
switch_core_hash_this(hi, NULL, NULL, &val);
if ((node = (fifo_node_t *) val) && node->is_static && node->ready == 1) {
node->ready = -1;

View File

@ -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(pvt->hash))) {
void *val = NULL;
const void *key;
switch_ssize_t keylen;
@ -391,7 +391,7 @@ SWITCH_LIMIT_STATUS(limit_status_hash)
switch_thread_rwlock_rdlock(globals.limit_hash_rwlock);
for (hi = switch_core_hash_first( globals.limit_hash); hi; switch_core_hash_next(hi)) {
for (hi = switch_core_hash_first(globals.limit_hash); hi; switch_core_hash_next(hi)) {
count++;
}
@ -623,7 +623,7 @@ SWITCH_STANDARD_API(hash_dump_function)
if (mode & 1) {
switch_thread_rwlock_rdlock(globals.limit_hash_rwlock);
for (hi = switch_core_hash_first( globals.limit_hash); hi; hi = switch_core_hash_next(&hi)) {
for (hi = switch_core_hash_first(globals.limit_hash); hi; hi = switch_core_hash_next(&hi)) {
void *val = NULL;
const void *key;
switch_ssize_t keylen;
@ -639,7 +639,7 @@ SWITCH_STANDARD_API(hash_dump_function)
if (mode & 2) {
switch_thread_rwlock_rdlock(globals.db_hash_rwlock);
for (hi = switch_core_hash_first( globals.db_hash); hi; hi = switch_core_hash_next(&hi)) {
for (hi = switch_core_hash_first(globals.db_hash); hi; hi = switch_core_hash_next(&hi)) {
void *val = NULL;
const void *key;
switch_ssize_t keylen;
@ -679,7 +679,7 @@ SWITCH_STANDARD_API(hash_remote_function)
stream->write_function(stream, "Remote connections:\nName\t\t\tState\n");
switch_thread_rwlock_rdlock(globals.remote_hash_rwlock);
for (hi = switch_core_hash_first( globals.remote_hash); hi; hi = switch_core_hash_next(&hi)) {
for (hi = switch_core_hash_first(globals.remote_hash); hi; hi = switch_core_hash_next(&hi)) {
void *val;
const void *key;
switch_ssize_t keylen;
@ -780,7 +780,7 @@ void limit_remote_destroy(limit_remote_t **r)
switch_thread_rwlock_wrlock((*r)->rwlock);
/* Free hashtable data */
for (hi = switch_core_hash_first( (*r)->index); hi; hi = switch_core_hash_next(&hi)) {
for (hi = switch_core_hash_first((*r)->index); hi; hi = switch_core_hash_next(&hi)) {
void *val;
const void *key;
switch_ssize_t keylen;
@ -803,7 +803,7 @@ static limit_hash_item_t get_remote_usage(const char *key) {
switch_hash_index_t *hi;
switch_thread_rwlock_rdlock(globals.remote_hash_rwlock);
for (hi = switch_core_hash_first( globals.remote_hash); hi; hi = switch_core_hash_next(&hi)) {
for (hi = switch_core_hash_first(globals.remote_hash); hi; hi = switch_core_hash_next(&hi)) {
void *val;
const void *hashkey;
switch_ssize_t keylen;
@ -1018,7 +1018,7 @@ SWITCH_MODULE_LOAD_FUNCTION(mod_hash_load)
SWITCH_MODULE_SHUTDOWN_FUNCTION(mod_hash_shutdown)
{
switch_hash_index_t *hi;
switch_hash_index_t *hi = NULL;
switch_bool_t remote_clean = SWITCH_TRUE;
switch_scheduler_del_task_group("mod_hash");
@ -1031,7 +1031,7 @@ SWITCH_MODULE_SHUTDOWN_FUNCTION(mod_hash_shutdown)
limit_remote_t *item = NULL;
switch_thread_rwlock_rdlock(globals.remote_hash_rwlock);
if ((hi = switch_core_hash_first( globals.remote_hash))) {
if ((hi = switch_core_hash_first(globals.remote_hash))) {
switch_core_hash_this(hi, &key, &keylen, &val);
item = (limit_remote_t *)val;
}
@ -1050,7 +1050,7 @@ SWITCH_MODULE_SHUTDOWN_FUNCTION(mod_hash_shutdown)
switch_thread_rwlock_wrlock(globals.limit_hash_rwlock);
switch_thread_rwlock_wrlock(globals.db_hash_rwlock);
while ((hi = switch_core_hash_first( globals.limit_hash))) {
while ((hi = switch_core_hash_first_iter( globals.limit_hash, hi))) {
void *val = NULL;
const void *key;
switch_ssize_t keylen;
@ -1059,7 +1059,7 @@ SWITCH_MODULE_SHUTDOWN_FUNCTION(mod_hash_shutdown)
switch_core_hash_delete(globals.limit_hash, key);
}
while ((hi = switch_core_hash_first( globals.db_hash))) {
while ((hi = switch_core_hash_first_iter( globals.db_hash, hi))) {
void *val = NULL;
const void *key;
switch_ssize_t keylen;

View File

@ -3088,7 +3088,7 @@ SWITCH_MODULE_SHUTDOWN_FUNCTION(mod_httapi_shutdown)
void *val;
const void *vvar;
for (hi = switch_core_hash_first( globals.profile_hash); hi; hi = switch_core_hash_next(&hi)) {
for (hi = switch_core_hash_first(globals.profile_hash); hi; hi = switch_core_hash_next(&hi)) {
switch_core_hash_this(hi, &vvar, NULL, &val);
profile = (client_profile_t *) val;
switch_event_destroy(&profile->dial_params.app_list);

View File

@ -2052,7 +2052,7 @@ SWITCH_STANDARD_API(dialplan_lcr_admin_function)
}
switch_assert(argv[0]);
if (!strcasecmp(argv[0], "show") && !strcasecmp(argv[1], "profiles")) {
for (hi = switch_core_hash_first( globals.profile_hash); hi; hi = switch_core_hash_next(&hi)) {
for (hi = switch_core_hash_first(globals.profile_hash); hi; hi = switch_core_hash_next(&hi)) {
switch_core_hash_this(hi, NULL, NULL, &val);
profile = (profile_t *) val;

View File

@ -172,7 +172,7 @@ SWITCH_LIMIT_RELEASE(limit_release_redis)
/* clear for uuid */
if (realm == NULL && resource == NULL) {
/* Loop through the channel's hashtable which contains mapping to all the limit_redis_item_t referenced by that channel */
while ((hi = switch_core_hash_first( pvt->hash))) {
while ((hi = switch_core_hash_first(pvt->hash))) {
void *p_val = NULL;
const void *p_key;
char *p_uuid_key = NULL;

View File

@ -139,7 +139,7 @@ SWITCH_STANDARD_API(dump_hash)
switch_thread_rwlock_rdlock(globals.spy_hash_lock);
for (hi = switch_core_hash_first( globals.spy_hash); hi; hi = switch_core_hash_next(&hi)) {
for (hi = switch_core_hash_first(globals.spy_hash); hi; hi = switch_core_hash_next(&hi)) {
switch_core_hash_this(hi, &key, NULL, &val);
spy = (spy_t *) val;

View File

@ -170,7 +170,7 @@ static void do_unload(void) {
switch_mutex_lock(MUTEX);
while ((hi = switch_core_hash_first( globals.translate_profiles))) {
while ((hi = switch_core_hash_first_iter( globals.translate_profiles, hi))) {
void *val = NULL;
const void *key;
switch_ssize_t keylen;

View File

@ -105,7 +105,7 @@ static void check_timeouts(void)
valet_lot_t *lot;
switch_console_callback_match_t *matches = NULL;
switch_console_callback_match_node_t *m;
switch_hash_index_t *i_hi;
switch_hash_index_t *i_hi = NULL;
const void *i_var;
void *i_val;
char *i_ext;
@ -120,7 +120,7 @@ static void check_timeouts(void)
}
globals.last_timeout_check = now;
for (hi = switch_core_hash_first( globals.hash); hi; hi = switch_core_hash_next(&hi)) {
for (hi = switch_core_hash_first(globals.hash); hi; hi = switch_core_hash_next(&hi)) {
switch_core_hash_this(hi, &var, NULL, &val);
switch_console_push_match(&matches, (const char *) var);
}
@ -135,7 +135,7 @@ static void check_timeouts(void)
top:
for (i_hi = switch_core_hash_first( lot->hash); i_hi; i_hi = switch_core_hash_next(&i_hi)) {
for (i_hi = switch_core_hash_first_iter( lot->hash, i_hi); i_hi; i_hi = switch_core_hash_next(&i_hi)) {
switch_core_hash_this(i_hi, &i_var, NULL, &i_val);
i_ext = (char *) i_var;
token = (valet_token_t *) i_val;
@ -146,6 +146,7 @@ static void check_timeouts(void)
goto top;
}
}
switch_safe_free(i_hi);
switch_mutex_unlock(lot->mutex);
}
@ -167,7 +168,7 @@ static int find_longest(valet_lot_t *lot, int min, int max)
time_t now = switch_epoch_time_now(NULL);
switch_mutex_lock(lot->mutex);
for (i_hi = switch_core_hash_first( lot->hash); i_hi; i_hi = switch_core_hash_next(&i_hi)) {
for (i_hi = switch_core_hash_first(lot->hash); i_hi; i_hi = switch_core_hash_next(&i_hi)) {
int i;
switch_core_hash_this(i_hi, &i_var, NULL, &i_val);
token = (valet_token_t *) i_val;
@ -257,7 +258,7 @@ static int valet_lot_count(valet_lot_t *lot)
now = switch_epoch_time_now(NULL);
switch_mutex_lock(lot->mutex);
for (i_hi = switch_core_hash_first( lot->hash); i_hi; i_hi = switch_core_hash_next(&i_hi)) {
for (i_hi = switch_core_hash_first(lot->hash); i_hi; i_hi = switch_core_hash_next(&i_hi)) {
switch_core_hash_this(i_hi, &i_var, NULL, &i_val);
token = (valet_token_t *) i_val;
if (token->timeout > 0 && (token->timeout < now || token->timeout == 1)) {
@ -738,7 +739,7 @@ SWITCH_STANDARD_API(valet_info_function)
stream->write_function(stream, "<lots>\n");
switch_mutex_lock(globals.mutex);
for (hi = switch_core_hash_first( globals.hash); hi; hi = switch_core_hash_next(&hi)) {
for (hi = switch_core_hash_first(globals.hash); hi; hi = switch_core_hash_next(&hi)) {
switch_hash_index_t *i_hi;
const void *i_var;
void *i_val;
@ -754,7 +755,7 @@ SWITCH_STANDARD_API(valet_info_function)
stream->write_function(stream, " <lot name=\"%s\">\n", name);
switch_mutex_lock(lot->mutex);
for (i_hi = switch_core_hash_first( lot->hash); i_hi; i_hi = switch_core_hash_next(&i_hi)) {
for (i_hi = switch_core_hash_first(lot->hash); i_hi; i_hi = switch_core_hash_next(&i_hi)) {
valet_token_t *token;
switch_core_hash_this(i_hi, &i_var, NULL, &i_val);
@ -848,7 +849,7 @@ static void pres_event_handler(switch_event_t *event)
const char *nvar;
switch_mutex_lock(globals.mutex);
for (hi = switch_core_hash_first( globals.hash); hi; hi = switch_core_hash_next(&hi)) {
for (hi = switch_core_hash_first(globals.hash); hi; hi = switch_core_hash_next(&hi)) {
switch_core_hash_this(hi, &var, NULL, &val);
nvar = (const char *) var;

View File

@ -3866,7 +3866,7 @@ SWITCH_STANDARD_API(boxcount_api_function)
/* Kept for backwards-compatibility */
switch_hash_index_t *hi;
switch_mutex_lock(globals.mutex);
if ((hi = switch_core_hash_first( globals.profile_hash))) {
if ((hi = switch_core_hash_first(globals.profile_hash))) {
void *val;
switch_core_hash_this(hi, NULL, NULL, &val);
profile = (vm_profile_t *) val;
@ -4020,7 +4020,7 @@ static void actual_message_query_handler(switch_event_t *event)
"Cound not find a profile for domain: [%s] Returning 0 messages\nWhen message-query-exact-match is enabled you must have a dedicated vm profile per distinct domain name you wish to use.\n", domain);
}
} else {
for (hi = switch_core_hash_first( globals.profile_hash); hi; hi = switch_core_hash_next(&hi)) {
for (hi = switch_core_hash_first(globals.profile_hash); hi; hi = switch_core_hash_next(&hi)) {
switch_core_hash_this(hi, NULL, NULL, &val);
profile = (vm_profile_t *) val;
parse_profile();
@ -4029,6 +4029,7 @@ static void actual_message_query_handler(switch_event_t *event)
break;
}
}
switch_safe_free(hi);
}
switch_safe_free(dup);
@ -4923,7 +4924,7 @@ SWITCH_STANDARD_API(voicemail_api_function)
} else if (!strcasecmp(argv[0], "status")) {
stream->write_function(stream, "============================\n");
switch_mutex_lock(globals.mutex);
for (hi = switch_core_hash_first( globals.profile_hash); hi; hi = switch_core_hash_next(&hi)) {
for (hi = switch_core_hash_first(globals.profile_hash); hi; hi = switch_core_hash_next(&hi)) {
switch_core_hash_this(hi, NULL, NULL, &val);
profile = (vm_profile_t *) val;
stream->write_function(stream, "Profile: %s\n", profile->name);
@ -4958,7 +4959,7 @@ SWITCH_STANDARD_API(voicemail_api_function)
void *value;
switch_mutex_lock(globals.mutex);
for (index = switch_core_hash_first( globals.profile_hash); index; index = switch_core_hash_next(&index)) {
for (index = switch_core_hash_first(globals.profile_hash); index; index = switch_core_hash_next(&index)) {
switch_core_hash_this(index, NULL, NULL, &value);
profile = (vm_profile_t *) value;
if (profile) {
@ -4966,6 +4967,7 @@ SWITCH_STANDARD_API(voicemail_api_function)
break;
}
}
switch_safe_free(index);
switch_mutex_unlock(globals.mutex);
}
@ -6237,7 +6239,7 @@ SWITCH_MODULE_LOAD_FUNCTION(mod_voicemail_load)
SWITCH_MODULE_SHUTDOWN_FUNCTION(mod_voicemail_shutdown)
{
switch_hash_index_t *hi;
switch_hash_index_t *hi = NULL;
vm_profile_t *profile;
void *val = NULL;
const void *key;
@ -6261,7 +6263,7 @@ SWITCH_MODULE_SHUTDOWN_FUNCTION(mod_voicemail_shutdown)
}
switch_mutex_lock(globals.mutex);
while ((hi = switch_core_hash_first( globals.profile_hash))) {
while ((hi = switch_core_hash_first_iter( globals.profile_hash, hi))) {
switch_core_hash_this(hi, &key, &keylen, &val);
profile = (vm_profile_t *) val;

View File

@ -1158,7 +1158,7 @@ static switch_status_t synth_channel_set_params(speech_channel_t *schannel, mrcp
{
/* loop through each param and add to synth header or vendor-specific-params */
switch_hash_index_t *hi = NULL;
for (hi = switch_core_hash_first( schannel->params); hi; hi = switch_core_hash_next(&hi)) {
for (hi = switch_core_hash_first(schannel->params); hi; hi = switch_core_hash_next(&hi)) {
char *param_name = NULL, *param_val = NULL;
const void *key;
void *val;
@ -1633,7 +1633,7 @@ static switch_status_t synth_speech_open(switch_speech_handle_t *sh, const char
}
/* Set default TTS params */
for (hi = switch_core_hash_first( profile->default_synth_params); hi; hi = switch_core_hash_next(&hi)) {
for (hi = switch_core_hash_first(profile->default_synth_params); hi; hi = switch_core_hash_next(&hi)) {
char *param_name = NULL, *param_val = NULL;
const void *key;
void *val;
@ -2195,7 +2195,7 @@ static switch_status_t recog_channel_start(speech_channel_t *schannel)
r->timers_started = zstr(start_input_timers) || strcasecmp(start_input_timers, "false");
/* count enabled grammars */
for (egk = switch_core_hash_first( r->enabled_grammars); egk; egk = switch_core_hash_next(&egk)) {
for (egk = switch_core_hash_first(r->enabled_grammars); egk; egk = switch_core_hash_next(&egk)) {
// NOTE: This postponed type check is necessary to allow a non-URI-list grammar to execute alone
if (grammar_uri_count == 1 && grammar->type != GRAMMAR_TYPE_URI)
goto no_grammar_alone;
@ -2205,6 +2205,7 @@ static switch_status_t recog_channel_start(speech_channel_t *schannel)
no_grammar_alone:
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "(%s) Grammar '%s' can only be used alone (not a URI list)\n", schannel->name, key);
status = SWITCH_STATUS_FALSE;
switch_safe_free(egk);
goto done;
}
len = strlen(grammar->data);
@ -2227,7 +2228,7 @@ static switch_status_t recog_channel_start(speech_channel_t *schannel)
/* get the enabled grammars list */
grammar_uri_list = switch_core_alloc(schannel->memory_pool, grammar_uri_list_len + 1);
grammar_uri_list_len = 0;
for (egk = switch_core_hash_first( r->enabled_grammars); egk; egk = switch_core_hash_next(&egk)) {
for (egk = switch_core_hash_first(r->enabled_grammars); egk; egk = switch_core_hash_next(&egk)) {
switch_core_hash_this(egk, (void *) &key, NULL, (void *) &grammar);
len = strlen(grammar->data);
if (!len)
@ -2810,7 +2811,7 @@ static switch_status_t recog_channel_set_params(speech_channel_t *schannel, mrcp
{
/* loop through each param and add to recog header or vendor-specific-params */
switch_hash_index_t *hi = NULL;
for (hi = switch_core_hash_first( schannel->params); hi; hi = switch_core_hash_next(&hi)) {
for (hi = switch_core_hash_first(schannel->params); hi; hi = switch_core_hash_next(&hi)) {
char *param_name = NULL, *param_val = NULL;
const void *key;
void *val;
@ -3132,7 +3133,7 @@ static switch_status_t recog_asr_open(switch_asr_handle_t *ah, const char *codec
}
/* Set default ASR params */
for (hi = switch_core_hash_first( profile->default_recog_params); hi; hi = switch_core_hash_next(&hi)) {
for (hi = switch_core_hash_first(profile->default_recog_params); hi; hi = switch_core_hash_next(&hi)) {
char *param_name = NULL, *param_val = NULL;
const void *key;
void *val;

View File

@ -930,7 +930,7 @@ SWITCH_STANDARD_API(sangoma_function)
#define STATS_FORMAT "%-10.10s %-10.10s %-10.10s %-10.10s %-10.10s %-10.10s %-10.10s %-10.10s %-10.10s %-10.10s %-15.15s %-15.15s\n"
stream->write_function(stream, STATS_FORMAT,
"Session", "Codec", "Enc", "Dec", "Enc Tx", "Enc Rx", "Dec Tx", "Dec Rx", "Enc Lost", "Dec Lost", "Enc AvgRxMs", "Dec AvgRxMs");
for (hi = switch_core_hash_first( g_sessions_hash); hi; hi = switch_core_hash_next(&hi)) {
for (hi = switch_core_hash_first(g_sessions_hash); hi; hi = switch_core_hash_next(&hi)) {
struct sangoma_transcoding_session *sess;
char sessid_str[25];
char encoder_tx_str[25];

View File

@ -569,7 +569,7 @@ static void pres_event_handler(switch_event_t *event)
switch_mprintf("select sub_from, sub_to,'%q','%q','%q','%q' from jabber_subscriptions where sub_to = '%q%q'", type, rpid, status, proto, pstr,
from);
for (hi = switch_core_hash_first( globals.profile_hash); hi; hi = switch_core_hash_next(&hi)) {
for (hi = switch_core_hash_first(globals.profile_hash); hi; hi = switch_core_hash_next(&hi)) {
switch_core_hash_this(hi, NULL, NULL, &val);
profile = (mdl_profile_t *) val;
@ -701,7 +701,7 @@ static void roster_event_handler(switch_event_t *event)
sql = switch_mprintf("select *,'%q' from jabber_subscriptions", status ? status : "");
}
for (hi = switch_core_hash_first( globals.profile_hash); hi; hi = switch_core_hash_next(&hi)) {
for (hi = switch_core_hash_first(globals.profile_hash); hi; hi = switch_core_hash_next(&hi)) {
switch_core_hash_this(hi, NULL, NULL, &val);
profile = (mdl_profile_t *) val;
@ -738,7 +738,7 @@ static void ipchanged_event_handler(switch_event_t *event)
mdl_profile_t *profile;
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "IP change detected [%s]->[%s]\n", old_ip4, new_ip4);
if (globals.profile_hash) {
for (hi = switch_core_hash_first( globals.profile_hash); hi; hi = switch_core_hash_next(&hi)) {
for (hi = switch_core_hash_first(globals.profile_hash); hi; hi = switch_core_hash_next(&hi)) {
switch_core_hash_this(hi, NULL, NULL, &val);
profile = (mdl_profile_t *) val;
if (old_ip4 && profile->extip && !strcmp(profile->extip, old_ip4)) {
@ -799,7 +799,7 @@ static void sign_off(void)
sql = switch_mprintf("select * from jabber_subscriptions");
for (hi = switch_core_hash_first( globals.profile_hash); hi; hi = switch_core_hash_next(&hi)) {
for (hi = switch_core_hash_first(globals.profile_hash); hi; hi = switch_core_hash_next(&hi)) {
switch_core_hash_this(hi, NULL, NULL, &val);
profile = (mdl_profile_t *) val;
@ -2684,7 +2684,7 @@ static switch_status_t list_profiles(const char *line, const char *cursor, switc
switch_console_callback_match_t *my_matches = NULL;
switch_status_t status = SWITCH_STATUS_FALSE;
for (hi = switch_core_hash_first( globals.profile_hash); hi; hi = switch_core_hash_next(&hi)) {
for (hi = switch_core_hash_first(globals.profile_hash); hi; hi = switch_core_hash_next(&hi)) {
switch_core_hash_this(hi, &vvar, NULL, &val);
profile = (mdl_profile_t *) val;
if (!strncmp("dl_logout", line, 9)) {
@ -3090,7 +3090,7 @@ SWITCH_STANDARD_API(dingaling)
if (argv[0] && !strncasecmp(argv[0], "status", 6)) {
stream->write_function(stream, "--DingaLing status--\n");
stream->write_function(stream, "login | connected\n");
for (hi = switch_core_hash_first( globals.profile_hash); hi; hi = switch_core_hash_next(&hi)) {
for (hi = switch_core_hash_first(globals.profile_hash); hi; hi = switch_core_hash_next(&hi)) {
switch_core_hash_this(hi, NULL, NULL, &val);
profile = (mdl_profile_t *) val;
stream->write_function(stream, "%s | ", profile->login);
@ -3345,7 +3345,7 @@ static switch_status_t soft_reload(void)
switch_xml_free(xml);
for (hi = switch_core_hash_first( globals.profile_hash); hi; hi = switch_core_hash_next(&hi)) {
for (hi = switch_core_hash_first(globals.profile_hash); hi; hi = switch_core_hash_next(&hi)) {
switch_core_hash_this(hi, NULL, NULL, &data);
profile = (mdl_profile_t *) data;
@ -3356,7 +3356,7 @@ static switch_status_t soft_reload(void)
}
}
for (hi = switch_core_hash_first( name_hash); hi; hi = switch_core_hash_next(&hi)) {
for (hi = switch_core_hash_first(name_hash); hi; hi = switch_core_hash_next(&hi)) {
switch_core_hash_this(hi, NULL, NULL, &data);
if ((profile = switch_core_hash_find(globals.profile_hash, (char *) data))) {

View File

@ -2491,7 +2491,7 @@ static switch_status_t list_shared_streams(char **argv, int argc, switch_stream_
{
switch_hash_index_t *hi;
int cnt = 0;
for (hi = switch_core_hash_first( globals.sh_streams); hi; hi = switch_core_hash_next(&hi)) {
for (hi = switch_core_hash_first(globals.sh_streams); hi; hi = switch_core_hash_next(&hi)) {
const void *var;
void *val;
shared_audio_stream_t *s = NULL;
@ -2509,7 +2509,7 @@ static switch_status_t list_endpoints(char **argv, int argc, switch_stream_handl
{
switch_hash_index_t *hi;
int cnt = 0;
for (hi = switch_core_hash_first( globals.endpoints); hi; hi = switch_core_hash_next(&hi)) {
for (hi = switch_core_hash_first(globals.endpoints); hi; hi = switch_core_hash_next(&hi)) {
const void *var;
void *val;
audio_endpoint_t *e = NULL;

View File

@ -818,7 +818,7 @@ switch_status_t rtmp_session_request(rtmp_profile_t *profile, rtmp_session_t **n
static void rtmp_garbage_colletor(void)
{
switch_hash_index_t *hi;
switch_hash_index_t *hi = NULL;
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG1, "RTMP Garbage Collection\n");
@ -827,7 +827,7 @@ static void rtmp_garbage_colletor(void)
top:
for (hi = switch_core_hash_first( rtmp_globals.session_hash); hi; hi = switch_core_hash_next(&hi)) {
for (hi = switch_core_hash_first_iter( rtmp_globals.session_hash, hi); hi; hi = switch_core_hash_next(&hi)) {
void *val;
const void *key;
switch_ssize_t keylen;
@ -842,6 +842,7 @@ static void rtmp_garbage_colletor(void)
}
}
}
switch_safe_free(hi);
switch_thread_rwlock_unlock(rtmp_globals.session_rwlock);
}
@ -868,7 +869,7 @@ switch_status_t rtmp_real_session_destroy(rtmp_session_t **rsession)
int sess = 0;
switch_thread_rwlock_rdlock((*rsession)->session_rwlock);
for (hi = switch_core_hash_first( (*rsession)->session_hash); hi; hi = switch_core_hash_next(&hi)) {
for (hi = switch_core_hash_first((*rsession)->session_hash); hi; hi = switch_core_hash_next(&hi)) {
void *val;
const void *key;
switch_ssize_t keylen;
@ -1086,7 +1087,7 @@ switch_status_t rtmp_profile_destroy(rtmp_profile_t **profile) {
switch_thread_rwlock_wrlock((*profile)->rwlock);
/* Kill all sessions */
while ((hi = switch_core_hash_first( (*profile)->session_hash))) {
while ((hi = switch_core_hash_first((*profile)->session_hash))) {
void *val;
rtmp_session_t *session;
const void *key;
@ -1633,7 +1634,7 @@ SWITCH_STANDARD_API(rtmp_function)
stream->write_function(stream, "\nSessions:\n");
stream->write_function(stream, "uuid,address,user,domain,flashVer,state\n");
switch_thread_rwlock_rdlock(profile->session_rwlock);
for (hi = switch_core_hash_first( profile->session_hash); hi; hi = switch_core_hash_next(&hi)) {
for (hi = switch_core_hash_first(profile->session_hash); hi; hi = switch_core_hash_next(&hi)) {
void *val;
const void *key;
switch_ssize_t keylen;
@ -1655,7 +1656,7 @@ SWITCH_STANDARD_API(rtmp_function)
stream->write_function(stream, "user,nickname,uuid\n");
switch_thread_rwlock_rdlock(profile->reg_rwlock);
for (hi = switch_core_hash_first( profile->reg_hash); hi; hi = switch_core_hash_next(&hi)) {
for (hi = switch_core_hash_first(profile->reg_hash); hi; hi = switch_core_hash_next(&hi)) {
void *val;
const void *key;
switch_ssize_t keylen;
@ -1681,7 +1682,7 @@ SWITCH_STANDARD_API(rtmp_function)
} else {
switch_hash_index_t *hi;
switch_thread_rwlock_rdlock(rtmp_globals.profile_rwlock);
for (hi = switch_core_hash_first( rtmp_globals.profile_hash); hi; hi = switch_core_hash_next(&hi)) {
for (hi = switch_core_hash_first(rtmp_globals.profile_hash); hi; hi = switch_core_hash_next(&hi)) {
void *val;
const void *key;
switch_ssize_t keylen;
@ -1805,7 +1806,7 @@ static switch_status_t console_complete_hashtable(switch_hash_t *hash, const cha
switch_console_callback_match_t *my_matches = NULL;
switch_status_t status = SWITCH_STATUS_FALSE;
for (hi = switch_core_hash_first( hash); hi; hi = switch_core_hash_next(&hi)) {
for (hi = switch_core_hash_first(hash); hi; hi = switch_core_hash_next(&hi)) {
switch_core_hash_this(hi, &vvar, NULL, &val);
switch_console_push_match(&my_matches, (const char *) vvar);
}
@ -1930,10 +1931,10 @@ SWITCH_MODULE_LOAD_FUNCTION(mod_rtmp_load)
SWITCH_MODULE_SHUTDOWN_FUNCTION(mod_rtmp_shutdown)
{
switch_hash_index_t *hi;
switch_hash_index_t *hi = NULL;
switch_mutex_lock(rtmp_globals.mutex);
while ((hi = switch_core_hash_first( rtmp_globals.profile_hash))) {
while ((hi = switch_core_hash_first_iter( rtmp_globals.profile_hash, hi))) {
void *val;
const void *key;
switch_ssize_t keylen;

View File

@ -243,7 +243,7 @@ switch_status_t rtmp_check_auth(rtmp_session_t *rsession, const char *user, cons
if (disallow_multiple_registration) {
switch_hash_index_t *hi;
switch_thread_rwlock_rdlock(rsession->profile->session_rwlock);
for (hi = switch_core_hash_first( rsession->profile->session_hash); hi; hi = switch_core_hash_next(&hi)) {
for (hi = switch_core_hash_first(rsession->profile->session_hash); hi; hi = switch_core_hash_next(&hi)) {
void *val;
const void *key;
switch_ssize_t keylen;

View File

@ -197,7 +197,7 @@ skinny_profile_t *skinny_find_profile_by_domain(const char *domain_name)
skinny_profile_t *profile = NULL, *tmp_profile;
switch_mutex_lock(globals.mutex);
for (hi = switch_core_hash_first( globals.profile_hash); hi; hi = switch_core_hash_next(&hi)) {
for (hi = switch_core_hash_first(globals.profile_hash); hi; hi = switch_core_hash_next(&hi)) {
switch_core_hash_this(hi, NULL, NULL, &val);
tmp_profile = (skinny_profile_t *) val;
@ -210,6 +210,7 @@ skinny_profile_t *skinny_find_profile_by_domain(const char *domain_name)
break;
}
}
switch_safe_free(hi);
switch_mutex_unlock(globals.mutex);
return profile;
@ -1401,7 +1402,7 @@ static void walk_listeners(skinny_listener_callback_func_t callback, void *pvt)
/* walk listeners */
switch_mutex_lock(globals.mutex);
for (hi = switch_core_hash_first( globals.profile_hash); hi; hi = switch_core_hash_next(&hi)) {
for (hi = switch_core_hash_first(globals.profile_hash); hi; hi = switch_core_hash_next(&hi)) {
switch_core_hash_this(hi, NULL, NULL, &val);
profile = (skinny_profile_t *) val;
@ -2441,7 +2442,7 @@ static void skinny_trap_event_handler(switch_event_t *event)
switch_mutex_lock(globals.mutex);
if (globals.profile_hash) {
for (hi = switch_core_hash_first( globals.profile_hash); hi; hi = switch_core_hash_next(&hi)) {
for (hi = switch_core_hash_first(globals.profile_hash); hi; hi = switch_core_hash_next(&hi)) {
switch_core_hash_this(hi, &var, NULL, &val);
if ((profile = (skinny_profile_t *) val) && profile->auto_restart) {
if (!strcmp(profile->ip, old_ip4)) {
@ -2477,7 +2478,7 @@ SWITCH_MODULE_LOAD_FUNCTION(mod_skinny_load)
load_skinny_config();
/* at least one profile */
if (!switch_core_hash_first( globals.profile_hash)) {
if (switch_core_hash_empty( globals.profile_hash)) {
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "No profile found!\n");
return SWITCH_STATUS_TERM;
}
@ -2540,7 +2541,7 @@ SWITCH_MODULE_LOAD_FUNCTION(mod_skinny_load)
/* launch listeners */
switch_mutex_lock(globals.mutex);
for (hi = switch_core_hash_first( globals.profile_hash); hi; hi = switch_core_hash_next(&hi)) {
for (hi = switch_core_hash_first(globals.profile_hash); hi; hi = switch_core_hash_next(&hi)) {
void *val;
skinny_profile_t *profile;
@ -2587,7 +2588,7 @@ SWITCH_MODULE_SHUTDOWN_FUNCTION(mod_skinny_shutdown)
/* close sockets */
switch_mutex_lock(globals.mutex);
for (hi = switch_core_hash_first( globals.profile_hash); hi; hi = switch_core_hash_next(&hi)) {
for (hi = switch_core_hash_first(globals.profile_hash); hi; hi = switch_core_hash_next(&hi)) {
skinny_profile_t *profile;
switch_core_hash_this(hi, NULL, NULL, &val);
profile = (skinny_profile_t *) val;

View File

@ -49,7 +49,7 @@ static switch_status_t skinny_api_list_profiles(const char *line, const char *cu
/* walk profiles */
switch_mutex_lock(globals.mutex);
for (hi = switch_core_hash_first( globals.profile_hash); hi; hi = switch_core_hash_next(&hi)) {
for (hi = switch_core_hash_first(globals.profile_hash); hi; hi = switch_core_hash_next(&hi)) {
switch_core_hash_this(hi, NULL, NULL, &val);
profile = (skinny_profile_t *) val;

View File

@ -2474,7 +2474,7 @@ static switch_status_t cmd_status(char **argv, int argc, switch_stream_handle_t
stream->write_function(stream, "%25s\t%32s\t%s\t%s\t%s\n", "Profile::Gateway-Name", " Data ", "State", "IB Calls(F/T)", "OB Calls(F/T)");
stream->write_function(stream, "%s\n", line);
switch_mutex_lock(mod_sofia_globals.hash_mutex);
for (hi = switch_core_hash_first( mod_sofia_globals.profile_hash); hi; hi = switch_core_hash_next(&hi)) {
for (hi = switch_core_hash_first(mod_sofia_globals.profile_hash); hi; hi = switch_core_hash_next(&hi)) {
switch_core_hash_this(hi, &vvar, NULL, &val);
profile = (sofia_profile_t *) val;
if (sofia_test_pflag(profile, PFLAG_RUNNING)) {
@ -2707,7 +2707,7 @@ static switch_status_t cmd_status(char **argv, int argc, switch_stream_handle_t
stream->write_function(stream, "%25s\t%s\t %40s\t%s\n", "Name", " Type", "Data", "State");
stream->write_function(stream, "%s\n", line);
switch_mutex_lock(mod_sofia_globals.hash_mutex);
for (hi = switch_core_hash_first( mod_sofia_globals.profile_hash); hi; hi = switch_core_hash_next(&hi)) {
for (hi = switch_core_hash_first(mod_sofia_globals.profile_hash); hi; hi = switch_core_hash_next(&hi)) {
switch_core_hash_this(hi, &vvar, NULL, &val);
profile = (sofia_profile_t *) val;
if (sofia_test_pflag(profile, PFLAG_RUNNING)) {
@ -2819,7 +2819,7 @@ static switch_status_t cmd_xml_status(char **argv, int argc, switch_stream_handl
stream->write_function(stream, "<gateways>\n", header);
switch_mutex_lock(mod_sofia_globals.hash_mutex);
for (hi = switch_core_hash_first( mod_sofia_globals.profile_hash); hi; hi = switch_core_hash_next(&hi)) {
for (hi = switch_core_hash_first(mod_sofia_globals.profile_hash); hi; hi = switch_core_hash_next(&hi)) {
switch_core_hash_this(hi, &vvar, NULL, &val);
profile = (sofia_profile_t *) val;
if (sofia_test_pflag(profile, PFLAG_RUNNING)) {
@ -2991,7 +2991,7 @@ static switch_status_t cmd_xml_status(char **argv, int argc, switch_stream_handl
stream->write_function(stream, "%s\n", header);
stream->write_function(stream, "<profiles>\n");
switch_mutex_lock(mod_sofia_globals.hash_mutex);
for (hi = switch_core_hash_first( mod_sofia_globals.profile_hash); hi; hi = switch_core_hash_next(&hi)) {
for (hi = switch_core_hash_first(mod_sofia_globals.profile_hash); hi; hi = switch_core_hash_next(&hi)) {
switch_core_hash_this(hi, &vvar, NULL, &val);
profile = (sofia_profile_t *) val;
if (sofia_test_pflag(profile, PFLAG_RUNNING)) {
@ -3654,7 +3654,7 @@ SWITCH_STANDARD_API(sofia_contact_function)
const void *var;
void *val;
for (hi = switch_core_hash_first( mod_sofia_globals.profile_hash); hi; hi = switch_core_hash_next(&hi)) {
for (hi = switch_core_hash_first(mod_sofia_globals.profile_hash); hi; hi = switch_core_hash_next(&hi)) {
switch_core_hash_this(hi, &var, NULL, &val);
if ((profile = (sofia_profile_t *) val) && !strcmp((char *)var, profile->name)) {
select_from_profile(profile, user, domain, concat, exclude_contact, &mystream, SWITCH_TRUE);
@ -3839,7 +3839,7 @@ SWITCH_STANDARD_API(sofia_presence_data_function)
const void *var;
void *val;
for (hi = switch_core_hash_first( mod_sofia_globals.profile_hash); hi; hi = switch_core_hash_next(&hi)) {
for (hi = switch_core_hash_first(mod_sofia_globals.profile_hash); hi; hi = switch_core_hash_next(&hi)) {
switch_core_hash_this(hi, &var, NULL, &val);
if ((profile = (sofia_profile_t *) val) && !strcmp((char *)var, profile->name)) {
get_presence_data(profile, user, domain, search, stream);
@ -5230,7 +5230,7 @@ static void general_event_handler(switch_event_t *event)
switch_mutex_lock(mod_sofia_globals.hash_mutex);
if (mod_sofia_globals.profile_hash && !zstr(old_ip4) && !zstr(new_ip4)) {
for (hi = switch_core_hash_first( mod_sofia_globals.profile_hash); hi; hi = switch_core_hash_next(&hi)) {
for (hi = switch_core_hash_first(mod_sofia_globals.profile_hash); hi; hi = switch_core_hash_next(&hi)) {
switch_core_hash_this(hi, &var, NULL, &val);
if ((profile = (sofia_profile_t *) val)) {
@ -5259,7 +5259,7 @@ static void general_event_handler(switch_event_t *event)
switch_mutex_lock(mod_sofia_globals.hash_mutex);
if (mod_sofia_globals.profile_hash) {
for (hi = switch_core_hash_first( mod_sofia_globals.profile_hash); hi; hi = switch_core_hash_next(&hi)) {
for (hi = switch_core_hash_first(mod_sofia_globals.profile_hash); hi; hi = switch_core_hash_next(&hi)) {
int rb = 0;
uint32_t x = 0;
switch_core_hash_this(hi, &var, NULL, &val);
@ -5372,7 +5372,7 @@ switch_status_t list_profiles_full(const char *line, const char *cursor, switch_
switch_status_t status = SWITCH_STATUS_FALSE;
switch_mutex_lock(mod_sofia_globals.hash_mutex);
for (hi = switch_core_hash_first( mod_sofia_globals.profile_hash); hi; hi = switch_core_hash_next(&hi)) {
for (hi = switch_core_hash_first(mod_sofia_globals.profile_hash); hi; hi = switch_core_hash_next(&hi)) {
switch_core_hash_this(hi, &vvar, NULL, &val);
profile = (sofia_profile_t *) val;
@ -5410,7 +5410,7 @@ static switch_status_t list_gateways(const char *line, const char *cursor, switc
switch_status_t status = SWITCH_STATUS_FALSE;
switch_mutex_lock(mod_sofia_globals.hash_mutex);
for (hi = switch_core_hash_first( mod_sofia_globals.profile_hash); hi; hi = switch_core_hash_next(&hi)) {
for (hi = switch_core_hash_first(mod_sofia_globals.profile_hash); hi; hi = switch_core_hash_next(&hi)) {
switch_core_hash_this(hi, &vvar, NULL, &val);
profile = (sofia_profile_t *) val;
if (sofia_test_pflag(profile, PFLAG_RUNNING)) {

View File

@ -7196,7 +7196,7 @@ nua_handle_t *sofia_global_nua_handle_by_replaces(sip_replaces_t *replaces)
switch_mutex_lock(mod_sofia_globals.hash_mutex);
if (mod_sofia_globals.profile_hash) {
for (hi = switch_core_hash_first( mod_sofia_globals.profile_hash); hi; hi = switch_core_hash_next(&hi)) {
for (hi = switch_core_hash_first(mod_sofia_globals.profile_hash); hi; hi = switch_core_hash_next(&hi)) {
switch_core_hash_this(hi, &var, NULL, &val);
if ((profile = (sofia_profile_t *) val)) {
if (!(nh = nua_handle_by_replaces(profile->nua, replaces))) {
@ -7206,6 +7206,7 @@ nua_handle_t *sofia_global_nua_handle_by_replaces(sip_replaces_t *replaces)
break;
}
}
switch_safe_free(hi);
}
switch_mutex_unlock(mod_sofia_globals.hash_mutex);

View File

@ -1653,7 +1653,7 @@ void sofia_glue_restart_all_profiles(void)
switch_mutex_lock(mod_sofia_globals.hash_mutex);
if (mod_sofia_globals.profile_hash) {
for (hi = switch_core_hash_first( mod_sofia_globals.profile_hash); hi; hi = switch_core_hash_next(&hi)) {
for (hi = switch_core_hash_first(mod_sofia_globals.profile_hash); hi; hi = switch_core_hash_next(&hi)) {
switch_core_hash_this(hi, &var, NULL, &val);
if ((pptr = (sofia_profile_t *) val)) {
int rsec = 10;
@ -1688,7 +1688,7 @@ void sofia_glue_global_siptrace(switch_bool_t on)
switch_mutex_lock(mod_sofia_globals.hash_mutex);
if (mod_sofia_globals.profile_hash) {
for (hi = switch_core_hash_first( mod_sofia_globals.profile_hash); hi; hi = switch_core_hash_next(&hi)) {
for (hi = switch_core_hash_first(mod_sofia_globals.profile_hash); hi; hi = switch_core_hash_next(&hi)) {
switch_core_hash_this(hi, &var, NULL, &val);
if ((pptr = (sofia_profile_t *) val)) {
nua_set_params(pptr->nua, TPTAG_LOG(on), TAG_END());
@ -1708,7 +1708,7 @@ void sofia_glue_global_standby(switch_bool_t on)
switch_mutex_lock(mod_sofia_globals.hash_mutex);
if (mod_sofia_globals.profile_hash) {
for (hi = switch_core_hash_first( mod_sofia_globals.profile_hash); hi; hi = switch_core_hash_next(&hi)) {
for (hi = switch_core_hash_first(mod_sofia_globals.profile_hash); hi; hi = switch_core_hash_next(&hi)) {
switch_core_hash_this(hi, &var, NULL, &val);
if ((pptr = (sofia_profile_t *) val)) {
if (on) {
@ -1732,7 +1732,7 @@ void sofia_glue_global_capture(switch_bool_t on)
switch_mutex_lock(mod_sofia_globals.hash_mutex);
if (mod_sofia_globals.profile_hash) {
for (hi = switch_core_hash_first( mod_sofia_globals.profile_hash); hi; hi = switch_core_hash_next(&hi)) {
for (hi = switch_core_hash_first(mod_sofia_globals.profile_hash); hi; hi = switch_core_hash_next(&hi)) {
switch_core_hash_this(hi, &var, NULL, &val);
if ((pptr = (sofia_profile_t *) val)) {
nua_set_params(pptr->nua, TPTAG_CAPT(on ? mod_sofia_globals.capture_server : NULL), TAG_END());
@ -1753,7 +1753,7 @@ void sofia_glue_global_watchdog(switch_bool_t on)
switch_mutex_lock(mod_sofia_globals.hash_mutex);
if (mod_sofia_globals.profile_hash) {
for (hi = switch_core_hash_first( mod_sofia_globals.profile_hash); hi; hi = switch_core_hash_next(&hi)) {
for (hi = switch_core_hash_first(mod_sofia_globals.profile_hash); hi; hi = switch_core_hash_next(&hi)) {
switch_core_hash_this(hi, &var, NULL, &val);
if ((pptr = (sofia_profile_t *) val)) {
pptr->watchdog_enabled = (on ? 1 : 0);
@ -1776,7 +1776,7 @@ void sofia_glue_del_profile(sofia_profile_t *profile)
switch_mutex_lock(mod_sofia_globals.hash_mutex);
if (mod_sofia_globals.profile_hash) {
for (hi = switch_core_hash_first( mod_sofia_globals.profile_hash); hi; hi = switch_core_hash_next(&hi)) {
for (hi = switch_core_hash_first(mod_sofia_globals.profile_hash); hi; hi = switch_core_hash_next(&hi)) {
switch_core_hash_this(hi, &var, NULL, &val);
if ((pptr = (sofia_profile_t *) val) && pptr == profile) {
aliases[i++] = strdup((char *) var);

View File

@ -1101,7 +1101,7 @@ static int debounce_check(sofia_profile_t *profile, const char *user, const char
void sofia_reg_close_handles(sofia_profile_t *profile)
{
nua_handle_t *nh = NULL;
switch_hash_index_t *hi;
switch_hash_index_t *hi = NULL;
const void *var;
void *val;
@ -1109,7 +1109,7 @@ void sofia_reg_close_handles(sofia_profile_t *profile)
switch_mutex_lock(profile->flag_mutex);
if (profile->reg_nh_hash) {
top:
for (hi = switch_core_hash_first( profile->reg_nh_hash); hi; hi = switch_core_hash_next(&hi)) {
for (hi = switch_core_hash_first_iter( profile->reg_nh_hash, hi); hi; hi = switch_core_hash_next(&hi)) {
switch_core_hash_this(hi, &var, NULL, &val);
if ((nh = (nua_handle_t *) val)) {
nua_handle_unref(nh);
@ -1118,6 +1118,8 @@ void sofia_reg_close_handles(sofia_profile_t *profile)
goto top;
}
}
switch_safe_free(hi);
}
switch_mutex_unlock(profile->flag_mutex);
@ -3155,7 +3157,7 @@ sofia_gateway_t *sofia_reg_find_gateway_by_realm__(const char *file, const char
void *val;
switch_mutex_lock(mod_sofia_globals.hash_mutex);
for (hi = switch_core_hash_first( mod_sofia_globals.gateway_hash); hi; hi = switch_core_hash_next(&hi)) {
for (hi = switch_core_hash_first(mod_sofia_globals.gateway_hash); hi; hi = switch_core_hash_next(&hi)) {
switch_core_hash_this(hi, &var, NULL, &val);
if (key && (gateway = (sofia_gateway_t *) val) && !gateway->deleted && gateway->register_realm && !strcasecmp(gateway->register_realm, key)) {
break;
@ -3163,6 +3165,7 @@ sofia_gateway_t *sofia_reg_find_gateway_by_realm__(const char *file, const char
gateway = NULL;
}
}
switch_safe_free(hi);
if (gateway) {
if (!sofia_test_pflag(gateway->profile, PFLAG_RUNNING) || gateway->deleted) {

View File

@ -279,7 +279,7 @@ static void do_rotate_all()
}
switch_mutex_lock(globals.mutex);
for (hi = switch_core_hash_first( globals.fd_hash); hi; hi = switch_core_hash_next(&hi)) {
for (hi = switch_core_hash_first(globals.fd_hash); hi; hi = switch_core_hash_next(&hi)) {
switch_core_hash_this(hi, NULL, NULL, &val);
fd = (cdr_fd_t *) val;
switch_mutex_lock(fd->mutex);
@ -296,7 +296,7 @@ static void do_teardown()
void *val;
cdr_fd_t *fd;
switch_mutex_lock(globals.mutex);
for (hi = switch_core_hash_first( globals.fd_hash); hi; hi = switch_core_hash_next(&hi)) {
for (hi = switch_core_hash_first(globals.fd_hash); hi; hi = switch_core_hash_next(&hi)) {
switch_core_hash_this(hi, NULL, NULL, &val);
fd = (cdr_fd_t *) val;
switch_mutex_lock(fd->mutex);

View File

@ -401,7 +401,7 @@ static void event_handler(switch_event_t *event)
}
if (sig && !strcmp(sig, "HUP")) {
for (hi = switch_core_hash_first( globals.fd_hash); hi; hi = switch_core_hash_next(&hi)) {
for (hi = switch_core_hash_first(globals.fd_hash); hi; hi = switch_core_hash_next(&hi)) {
switch_core_hash_this(hi, NULL, NULL, &val);
fd = (cdr_fd_t *) val;
switch_mutex_lock(fd->mutex);

View File

@ -1132,7 +1132,7 @@ static switch_status_t handle_ref_tuple(listener_t *listener, erlang_msg * msg,
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Hashed ref to %s\n", hash);
switch_thread_rwlock_rdlock(listener->session_rwlock);
for (iter = switch_core_hash_first( listener->sessions); iter; iter = switch_core_hash_next(&iter)) {
for (iter = switch_core_hash_first(listener->sessions); iter; iter = switch_core_hash_next(&iter)) {
switch_core_hash_this(iter, &key, NULL, &val);
se = (session_elem_t*)val;
if (se->spawn_reply && !strncmp(se->spawn_reply->hash, hash, 100)) {
@ -1154,6 +1154,7 @@ static switch_status_t handle_ref_tuple(listener_t *listener, erlang_msg * msg,
break;
}
}
switch_safe_free(iter);
switch_thread_rwlock_unlock(listener->session_rwlock);
if (found) {

View File

@ -364,7 +364,7 @@ session_elem_t *find_session_elem_by_pid(listener_t *listener, erlang_pid *pid)
session_elem_t *session = NULL;
switch_thread_rwlock_rdlock(listener->session_rwlock);
for (iter = switch_core_hash_first( listener->sessions); iter; iter = switch_core_hash_next(&iter)) {
for (iter = switch_core_hash_first(listener->sessions); iter; iter = switch_core_hash_next(&iter)) {
switch_core_hash_this(iter, &key, NULL, &val);
if (((session_elem_t*)val)->process.type == ERLANG_PID && !ei_compare_pids(pid, &((session_elem_t*)val)->process.pid)) {
@ -373,6 +373,7 @@ session_elem_t *find_session_elem_by_pid(listener_t *listener, erlang_pid *pid)
break;
}
}
switch_safe_free(iter);
switch_thread_rwlock_unlock(listener->session_rwlock);
return session;
@ -644,7 +645,7 @@ static switch_status_t check_attached_sessions(listener_t *listener, int *msgs_s
/* TODO try to minimize critical section */
switch_thread_rwlock_rdlock(listener->session_rwlock);
for (iter = switch_core_hash_first( listener->sessions); iter; iter = switch_core_hash_next(&iter)) {
for (iter = switch_core_hash_first(listener->sessions); iter; iter = switch_core_hash_next(&iter)) {
switch_core_hash_this(iter, &key, NULL, &value);
sp = (session_elem_t*)value;
if (switch_test_flag(sp, LFLAG_WAITING_FOR_PID)) {
@ -1333,7 +1334,7 @@ void destroy_listener(listener_t * listener)
/* clean up all the attached sessions */
switch_thread_rwlock_wrlock(listener->session_rwlock);
for (iter = switch_core_hash_first( listener->sessions); iter; iter = switch_core_hash_next(&iter)) {
for (iter = switch_core_hash_first(listener->sessions); iter; iter = switch_core_hash_next(&iter)) {
switch_core_hash_this(iter, &key, NULL, &value);
s = (session_elem_t*)value;
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Orphaning call %s\n", s->uuid_str);
@ -1529,7 +1530,7 @@ int count_listener_sessions(listener_t *listener)
switch_hash_index_t *iter;
switch_thread_rwlock_rdlock(listener->session_rwlock);
for (iter = switch_core_hash_first( listener->sessions); iter; iter = switch_core_hash_next(&iter)) {
for (iter = switch_core_hash_first(listener->sessions); iter; iter = switch_core_hash_next(&iter)) {
count++;
}
switch_thread_rwlock_unlock(listener->session_rwlock);
@ -1750,7 +1751,7 @@ SWITCH_STANDARD_API(erlang_cmd)
found = 1;
switch_thread_rwlock_rdlock(l->session_rwlock);
for (iter = switch_core_hash_first( l->sessions); iter; iter = switch_core_hash_next(&iter)) {
for (iter = switch_core_hash_first(l->sessions); iter; iter = switch_core_hash_next(&iter)) {
empty = 0;
switch_core_hash_this(iter, &key, NULL, &value);
sp = (session_elem_t*)value;
@ -1791,7 +1792,7 @@ SWITCH_STANDARD_API(erlang_cmd)
}
stream->write_function(stream, "CUSTOM:\n", switch_event_name(x));
for (iter = switch_core_hash_first( l->event_hash); iter; iter = switch_core_hash_next(&iter)) {
for (iter = switch_core_hash_first(l->event_hash); iter; iter = switch_core_hash_next(&iter)) {
switch_core_hash_this(iter, &key, NULL, &val);
stream->write_function(stream, "\t%s\n", (char *)key);
}

View File

@ -247,7 +247,7 @@ static void event_handler(switch_event_t *event)
struct peer_status *last;
char *host;
for (cur = switch_core_hash_first( globals.peer_hash); cur; cur = switch_core_hash_next(&cur)) {
for (cur = switch_core_hash_first(globals.peer_hash); cur; cur = switch_core_hash_next(&cur)) {
switch_core_hash_this(cur, &key, &keylen, &value);
host = (char *) key;
last = (struct peer_status *) value;
@ -351,7 +351,7 @@ SWITCH_STANDARD_API(multicast_peers)
char *host;
int i = 0;
for (cur = switch_core_hash_first( globals.peer_hash); cur; cur = switch_core_hash_next(&cur)) {
for (cur = switch_core_hash_first(globals.peer_hash); cur; cur = switch_core_hash_next(&cur)) {
switch_core_hash_this(cur, &key, &keylen, &value);
host = (char *) key;
last = (struct peer_status *) value;

View File

@ -495,7 +495,7 @@ static switch_status_t my_on_reporting(switch_core_session_t *session)
status = SWITCH_STATUS_SUCCESS;
for (hi = switch_core_hash_first( globals.profile_hash); hi; hi = switch_core_hash_next(&hi)) {
for (hi = switch_core_hash_first(globals.profile_hash); hi; hi = switch_core_hash_next(&hi)) {
cdr_profile_t *profile;
switch_core_hash_this(hi, NULL, NULL, &val);
profile = (cdr_profile_t *) val;
@ -518,7 +518,7 @@ static void event_handler(switch_event_t *event)
const char *sig = switch_event_get_header(event, "Trapped-Signal");
if (sig && !strcmp(sig, "HUP")) {
for (hi = switch_core_hash_first( globals.profile_hash); hi; hi = switch_core_hash_next(&hi)) {
for (hi = switch_core_hash_first(globals.profile_hash); hi; hi = switch_core_hash_next(&hi)) {
cdr_profile_t *profile;
switch_core_hash_this(hi, NULL, NULL, &val);
profile = (cdr_profile_t *) val;
@ -785,7 +785,7 @@ SWITCH_MODULE_SHUTDOWN_FUNCTION(mod_format_cdr_shutdown)
switch_event_unbind(&globals.node);
switch_core_remove_state_handler(&state_handlers);
for (hi = switch_core_hash_first( globals.profile_hash); hi; hi = switch_core_hash_next(&hi)) {
for (hi = switch_core_hash_first(globals.profile_hash); hi; hi = switch_core_hash_next(&hi)) {
cdr_profile_t *profile;
switch_core_hash_this(hi, NULL, NULL, &val);
profile = (cdr_profile_t *) val;

View File

@ -508,6 +508,7 @@ static void pause_when_offline(void)
break;
}
}
switch_safe_free(hi);
if (is_online) {
resume_inbound_calling();

View File

@ -105,7 +105,7 @@ static void unsubscribe(const char *uuid, const char *signal_type, const char *j
switch_log_printf(SWITCH_CHANNEL_UUID_LOG(uuid), SWITCH_LOG_DEBUG, "Unsubscribe %s => %s\n", signal_type, jid);
/* clean up hash if empty */
if (!switch_core_hash_first(signal_subscribers)) {
if (switch_core_hash_empty(signal_subscribers)) {
switch_log_printf(SWITCH_CHANNEL_UUID_LOG(uuid), SWITCH_LOG_DEBUG, "Destroy %s subscriber hash\n", signal_type);
switch_core_hash_destroy(&signal_subscribers);
switch_core_hash_delete(globals.subscribers, key);

View File

@ -810,7 +810,7 @@ SWITCH_STANDARD_API(show_local_stream_function)
switch_mutex_lock(globals.mutex);
if (zstr(cmd)) {
for (hi = switch_core_hash_first( globals.source_hash); hi; hi = switch_core_hash_next(&hi)) {
for (hi = switch_core_hash_first(globals.source_hash); hi; hi = switch_core_hash_next(&hi)) {
switch_core_hash_this(hi, &var, NULL, &val);
if ((source = (local_stream_source_t *) val)) {
stream->write_function(stream, "%s,%s\n", source->name, source->location);

View File

@ -198,7 +198,7 @@ void FSXML::DestroyHash()
}
/* First destroy all objects in the hash */
for (hi = switch_core_hash_first( tmp); hi; hi = switch_core_hash_next(&hi)) {
for (hi = switch_core_hash_first(tmp); hi; hi = switch_core_hash_next(&hi)) {
const void *var = NULL;
void *val = NULL;
FSXML *obj;

View File

@ -264,7 +264,7 @@ static switch_status_t process_node(const switch_log_node_t *node, switch_log_le
const void *var;
logfile_profile_t *profile;
for (hi = switch_core_hash_first( profile_hash); hi; hi = switch_core_hash_next(&hi)) {
for (hi = switch_core_hash_first(profile_hash); hi; hi = switch_core_hash_next(&hi)) {
size_t mask = 0;
size_t ok = 0;
@ -380,14 +380,14 @@ static void event_handler(switch_event_t *event)
if (sig && !strcmp(sig, "HUP")) {
if (globals.rotate) {
for (hi = switch_core_hash_first( profile_hash); hi; hi = switch_core_hash_next(&hi)) {
for (hi = switch_core_hash_first(profile_hash); hi; hi = switch_core_hash_next(&hi)) {
switch_core_hash_this(hi, &var, NULL, &val);
profile = val;
mod_logfile_rotate(profile);
}
} else {
switch_mutex_lock(globals.mutex);
for (hi = switch_core_hash_first( profile_hash); hi; hi = switch_core_hash_next(&hi)) {
for (hi = switch_core_hash_first(profile_hash); hi; hi = switch_core_hash_next(&hi)) {
switch_core_hash_this(hi, &var, NULL, &val);
profile = val;
switch_file_close(profile->log_afd);
@ -461,7 +461,7 @@ SWITCH_MODULE_SHUTDOWN_FUNCTION(mod_logfile_shutdown)
switch_log_unbind_logger(mod_logfile_logger);
switch_event_unbind(&globals.node);
for (hi = switch_core_hash_first( profile_hash); hi; hi = switch_core_hash_next(&hi)) {
for (hi = switch_core_hash_first(profile_hash); hi; hi = switch_core_hash_next(&hi)) {
logfile_profile_t *profile;
switch_core_hash_this(hi, &var, NULL, &val);
if ((profile = (logfile_profile_t *) val)) {

View File

@ -1023,7 +1023,7 @@ SWITCH_DECLARE(const char *) switch_core_mime_ext2type(const char *ext)
SWITCH_DECLARE(switch_hash_index_t *) switch_core_mime_index(void)
{
return switch_core_hash_first( runtime.mime_types);
return switch_core_hash_first(runtime.mime_types);
}
SWITCH_DECLARE(switch_status_t) switch_core_mime_add_type(const char *type, const char *ext)

View File

@ -205,9 +205,22 @@ SWITCH_DECLARE(void *) switch_core_hash_find_rdlock(switch_hash_t *hash, const c
return val;
}
SWITCH_DECLARE(switch_hash_index_t *) switch_core_hash_first(switch_hash_t *hash)
SWITCH_DECLARE(switch_bool_t) switch_core_hash_empty(switch_hash_t *hash)
{
return switch_hashtable_first(hash);
switch_hash_index_t *hi = switch_core_hash_first(hash);
if (hi) {
switch_safe_free(hi);
return SWITCH_FALSE;
}
return SWITCH_TRUE;
}
SWITCH_DECLARE(switch_hash_index_t *) switch_core_hash_first_iter(switch_hash_t *hash, switch_hash_index_t *hi)
{
return switch_hashtable_first_iter(hash, hi);
}
SWITCH_DECLARE(switch_hash_index_t *) switch_core_hash_next(switch_hash_index_t **hi)

View File

@ -222,7 +222,7 @@ SWITCH_DECLARE(uint32_t) switch_core_session_hupall_matching_var_ans(const char
return r;
switch_mutex_lock(runtime.session_hash_mutex);
for (hi = switch_core_hash_first( session_manager.session_table); hi; hi = switch_core_hash_next(&hi)) {
for (hi = switch_core_hash_first(session_manager.session_table); hi; hi = switch_core_hash_next(&hi)) {
switch_core_hash_this(hi, NULL, NULL, &val);
if (val) {
session = (switch_core_session_t *) val;
@ -275,7 +275,7 @@ SWITCH_DECLARE(switch_console_callback_match_t *) switch_core_session_findall_ma
switch_core_new_memory_pool(&pool);
switch_mutex_lock(runtime.session_hash_mutex);
for (hi = switch_core_hash_first( session_manager.session_table); hi; hi = switch_core_hash_next(&hi)) {
for (hi = switch_core_hash_first(session_manager.session_table); hi; hi = switch_core_hash_next(&hi)) {
switch_core_hash_this(hi, NULL, NULL, &val);
if (val) {
session = (switch_core_session_t *) val;
@ -319,7 +319,7 @@ SWITCH_DECLARE(void) switch_core_session_hupall_endpoint(const switch_endpoint_i
switch_core_new_memory_pool(&pool);
switch_mutex_lock(runtime.session_hash_mutex);
for (hi = switch_core_hash_first( session_manager.session_table); hi; hi = switch_core_hash_next(&hi)) {
for (hi = switch_core_hash_first(session_manager.session_table); hi; hi = switch_core_hash_next(&hi)) {
switch_core_hash_this(hi, NULL, NULL, &val);
if (val) {
session = (switch_core_session_t *) val;
@ -359,7 +359,7 @@ SWITCH_DECLARE(void) switch_core_session_hupall(switch_call_cause_t cause)
switch_mutex_lock(runtime.session_hash_mutex);
for (hi = switch_core_hash_first( session_manager.session_table); hi; hi = switch_core_hash_next(&hi)) {
for (hi = switch_core_hash_first(session_manager.session_table); hi; hi = switch_core_hash_next(&hi)) {
switch_core_hash_this(hi, NULL, NULL, &val);
if (val) {
session = (switch_core_session_t *) val;
@ -394,7 +394,7 @@ SWITCH_DECLARE(switch_console_callback_match_t *) switch_core_session_findall(vo
switch_console_callback_match_t *my_matches = NULL;
switch_mutex_lock(runtime.session_hash_mutex);
for (hi = switch_core_hash_first( session_manager.session_table); hi; hi = switch_core_hash_next(&hi)) {
for (hi = switch_core_hash_first(session_manager.session_table); hi; hi = switch_core_hash_next(&hi)) {
switch_core_hash_this(hi, NULL, NULL, &val);
if (val) {
session = (switch_core_session_t *) val;

View File

@ -576,7 +576,7 @@ SWITCH_DECLARE(switch_status_t) switch_event_shutdown(void)
}
}
for (hi = switch_core_hash_first( CUSTOM_HASH); hi; hi = switch_core_hash_next(&hi)) {
for (hi = switch_core_hash_first(CUSTOM_HASH); hi; hi = switch_core_hash_next(&hi)) {
switch_event_subclass_t *subclass;
switch_core_hash_this(hi, &var, NULL, &val);
if ((subclass = (switch_event_subclass_t *) val)) {
@ -2686,14 +2686,14 @@ static uint32_t switch_event_channel_unsub_head(switch_event_channel_func_t func
static void unsub_all_switch_event_channel(void)
{
switch_hash_index_t *hi;
switch_hash_index_t *hi = NULL;
const void *var;
void *val;
switch_event_channel_sub_node_head_t *head;
switch_thread_rwlock_wrlock(event_channel_manager.rwlock);
while ((hi = switch_core_hash_first( event_channel_manager.perm_hash))) {
while ((hi = switch_core_hash_first_iter( event_channel_manager.perm_hash, hi))) {
switch_event_t *vals = NULL;
switch_core_hash_this(hi, &var, NULL, &val);
vals = (switch_event_t *) val;
@ -2701,7 +2701,7 @@ static void unsub_all_switch_event_channel(void)
switch_event_destroy(&vals);
}
while ((hi = switch_core_hash_first( event_channel_manager.hash))) {
while ((hi = switch_core_hash_first_iter( event_channel_manager.hash, hi))) {
switch_core_hash_this(hi, NULL, NULL, &val);
head = (switch_event_channel_sub_node_head_t *) val;
switch_event_channel_unsub_head(NULL, head);
@ -2724,7 +2724,7 @@ static uint32_t switch_event_channel_unsub_channel(switch_event_channel_func_t f
switch_hash_index_t *hi;
void *val;
for (hi = switch_core_hash_first( event_channel_manager.hash); hi; hi = switch_core_hash_next(&hi)) {
for (hi = switch_core_hash_first(event_channel_manager.hash); hi; hi = switch_core_hash_next(&hi)) {
switch_core_hash_this(hi, NULL, NULL, &val);
if (val) {

View File

@ -294,11 +294,16 @@ SWITCH_DECLARE(switch_hashtable_iterator_t *) switch_hashtable_next(switch_hasht
return NULL;
}
SWITCH_DECLARE(switch_hashtable_iterator_t *) switch_hashtable_first(switch_hashtable_t *h)
SWITCH_DECLARE(switch_hashtable_iterator_t *) switch_hashtable_first_iter(switch_hashtable_t *h, switch_hashtable_iterator_t *it)
{
switch_hashtable_iterator_t *iterator;
switch_zmalloc(iterator, sizeof(*iterator));
if (it) {
iterator = it;
} else {
switch_zmalloc(iterator, sizeof(*iterator));
}
switch_assert(iterator);
iterator->pos = 0;

View File

@ -118,7 +118,7 @@ static void switch_loadable_module_runtime(void)
switch_loadable_module_t *module;
switch_mutex_lock(loadable_modules.mutex);
for (hi = switch_core_hash_first( loadable_modules.module_hash); hi; hi = switch_core_hash_next(&hi)) {
for (hi = switch_core_hash_first(loadable_modules.module_hash); hi; hi = switch_core_hash_next(&hi)) {
switch_core_hash_this(hi, NULL, NULL, &val);
module = (switch_loadable_module_t *) val;
@ -620,7 +620,7 @@ static switch_status_t do_chat_send(switch_event_t *message_event)
if (!switch_true(replying) && !switch_stristr("global", proto) && !switch_true(switch_event_get_header(message_event, "skip_global_process"))) {
switch_mutex_lock(loadable_modules.mutex);
for (hi = switch_core_hash_first( loadable_modules.chat_hash); hi; hi = switch_core_hash_next(&hi)) {
for (hi = switch_core_hash_first(loadable_modules.chat_hash); hi; hi = switch_core_hash_next(&hi)) {
switch_core_hash_this(hi, &var, NULL, &val);
if ((ci = (switch_chat_interface_t *) val)) {
@ -647,6 +647,7 @@ static switch_status_t do_chat_send(switch_event_t *message_event)
}
}
}
switch_safe_free(hi);
switch_mutex_unlock(loadable_modules.mutex);
}
@ -1639,7 +1640,7 @@ SWITCH_DECLARE(switch_status_t) switch_loadable_module_enumerate_loaded(switch_m
switch_loadable_module_t *module;
switch_mutex_lock(loadable_modules.mutex);
for (hi = switch_core_hash_first( loadable_modules.module_hash); hi; hi = switch_core_hash_next(&hi)) {
for (hi = switch_core_hash_first(loadable_modules.module_hash); hi; hi = switch_core_hash_next(&hi)) {
switch_core_hash_this(hi, NULL, NULL, &val);
module = (switch_loadable_module_t *) val;
@ -1986,7 +1987,7 @@ SWITCH_DECLARE(void) switch_loadable_module_shutdown(void)
}
for (hi = switch_core_hash_first( loadable_modules.module_hash); hi; hi = switch_core_hash_next(&hi)) {
for (hi = switch_core_hash_first(loadable_modules.module_hash); hi; hi = switch_core_hash_next(&hi)) {
switch_core_hash_this(hi, NULL, NULL, &val);
module = (switch_loadable_module_t *) val;
if (!module->perm) {
@ -1996,7 +1997,7 @@ SWITCH_DECLARE(void) switch_loadable_module_shutdown(void)
switch_yield(1000000);
for (hi = switch_core_hash_first( loadable_modules.module_hash); hi; hi = switch_core_hash_next(&hi)) {
for (hi = switch_core_hash_first(loadable_modules.module_hash); hi; hi = switch_core_hash_next(&hi)) {
switch_core_hash_this(hi, NULL, NULL, &val);
module = (switch_loadable_module_t *) val;
if (!module->perm) {
@ -2196,7 +2197,7 @@ SWITCH_DECLARE(int) switch_loadable_module_get_codecs(const switch_codec_impleme
const switch_codec_implementation_t *imp;
switch_mutex_lock(loadable_modules.mutex);
for (hi = switch_core_hash_first( loadable_modules.codec_hash); hi; hi = switch_core_hash_next(&hi)) {
for (hi = switch_core_hash_first(loadable_modules.codec_hash); hi; hi = switch_core_hash_next(&hi)) {
switch_core_hash_this(hi, NULL, NULL, &val);
codec_interface = (switch_codec_interface_t *) val;
@ -2218,6 +2219,7 @@ SWITCH_DECLARE(int) switch_loadable_module_get_codecs(const switch_codec_impleme
break;
}
}
switch_safe_free(hi);
switch_mutex_unlock(loadable_modules.mutex);

View File

@ -2017,7 +2017,7 @@ SWITCH_DECLARE(void) switch_rtp_shutdown(void)
switch_mutex_lock(port_lock);
for (hi = switch_core_hash_first( alloc_hash); hi; hi = switch_core_hash_next(&hi)) {
for (hi = switch_core_hash_first(alloc_hash); hi; hi = switch_core_hash_next(&hi)) {
switch_core_hash_this(hi, &var, NULL, &val);
if ((alloc = (switch_core_port_allocator_t *) val)) {
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Destroy port allocator for %s\n", (char *) var);

View File

@ -1945,7 +1945,7 @@ SWITCH_DECLARE(void) switch_xml_merge_user(switch_xml_t user, switch_xml_t domai
SWITCH_DECLARE(uint32_t) switch_xml_clear_user_cache(const char *key, const char *user_name, const char *domain_name)
{
switch_hash_index_t *hi;
switch_hash_index_t *hi = NULL;
void *val;
const void *var;
char mega_key[1024];
@ -1971,18 +1971,20 @@ SWITCH_DECLARE(uint32_t) switch_xml_clear_user_cache(const char *key, const char
} else {
while ((hi = switch_core_hash_first( CACHE_HASH))) {
while ((hi = switch_core_hash_first_iter( CACHE_HASH, hi))) {
switch_core_hash_this(hi, &var, NULL, &val);
switch_xml_free(val);
switch_core_hash_delete(CACHE_HASH, var);
r++;
}
while ((hi = switch_core_hash_first( CACHE_EXPIRES_HASH))) {
while ((hi = switch_core_hash_first_iter( CACHE_EXPIRES_HASH, hi))) {
switch_core_hash_this(hi, &var, NULL, &val);
switch_safe_free(val);
switch_core_hash_delete(CACHE_EXPIRES_HASH, var);
}
switch_safe_free(hi);
}
switch_mutex_unlock(CACHE_MUTEX);