diff --git a/src/include/switch_channel.h b/src/include/switch_channel.h index 70acd812ec..69dbdbc847 100644 --- a/src/include/switch_channel.h +++ b/src/include/switch_channel.h @@ -227,7 +227,7 @@ SWITCH_DECLARE(char *) switch_channel_get_variable(switch_channel_t *channel, co * pool is NULL, then an internal, non-thread-safe iterator is used. * @remark Use switch_hash_next and switch_hash_this with this function to iterate all the channel variables */ -SWITCH_DECLARE(switch_hash_index_t *) switch_channel_variable_first(switch_channel_t *channel, switch_memory_pool_t *pool); +SWITCH_DECLARE(switch_hash_index_t *) switch_channel_variable_first(switch_channel_t *channel); SWITCH_DECLARE(void) switch_channel_variable_last(switch_channel_t *channel); /*! diff --git a/src/include/switch_loadable_module.h b/src/include/switch_loadable_module.h index 2d2b1fde0b..a38446fac4 100644 --- a/src/include/switch_loadable_module.h +++ b/src/include/switch_loadable_module.h @@ -200,12 +200,11 @@ SWITCH_DECLARE(switch_management_interface_t *) switch_loadable_module_get_manag /*! \brief Retrieve the list of loaded codecs into an array - \param pool the memory pool to use for the hash index \param array the array to populate \param arraylen the max size in elements of the array \return the number of elements added to the array */ -SWITCH_DECLARE(int) switch_loadable_module_get_codecs(switch_memory_pool_t *pool, const switch_codec_implementation_t **array, int arraylen); +SWITCH_DECLARE(int) switch_loadable_module_get_codecs(const switch_codec_implementation_t **array, int arraylen); /*! diff --git a/src/mod/applications/mod_conference/mod_conference.c b/src/mod/applications/mod_conference/mod_conference.c index cc806a75c0..f5a78ecaa9 100644 --- a/src/mod/applications/mod_conference/mod_conference.c +++ b/src/mod/applications/mod_conference/mod_conference.c @@ -2822,7 +2822,7 @@ static switch_status_t conf_api_sub_list(conference_obj_t * conference, switch_s } if (conference == NULL) { - for (hi = switch_hash_first(globals.conference_pool, globals.conference_hash); hi; hi = switch_hash_next(hi)) { + for (hi = switch_hash_first(NULL, globals.conference_hash); hi; hi = switch_hash_next(hi)) { switch_hash_this(hi, NULL, NULL, &val); conference = (conference_obj_t *) val; diff --git a/src/mod/applications/mod_enum/mod_enum.c b/src/mod/applications/mod_enum/mod_enum.c index 72fd62b0f3..b03783a9a9 100644 --- a/src/mod/applications/mod_enum/mod_enum.c +++ b/src/mod/applications/mod_enum/mod_enum.c @@ -586,7 +586,7 @@ SWITCH_STANDARD_APP(enum_app_function) void *vval; const void *vvar; - if ((hi = switch_channel_variable_first(channel, switch_core_session_get_pool(session)))) { + if ((hi = switch_channel_variable_first(channel))) { for (; hi; hi = switch_hash_next(hi)) { switch_hash_this(hi, &vvar, NULL, &vval); if (vvar && !strncmp(vvar, "enum_", 5)) { diff --git a/src/mod/dialplans/mod_dialplan_xml/mod_dialplan_xml.c b/src/mod/dialplans/mod_dialplan_xml/mod_dialplan_xml.c index b36a7be0a1..f2a957afe0 100644 --- a/src/mod/dialplans/mod_dialplan_xml/mod_dialplan_xml.c +++ b/src/mod/dialplans/mod_dialplan_xml/mod_dialplan_xml.c @@ -252,7 +252,7 @@ static switch_status_t dialplan_xml_locate(switch_core_session_t *session, switc stream.write_function(&stream, "%s=%s&", prof_names[x], encode_buf); } - if ((hi = switch_channel_variable_first(channel, switch_core_session_get_pool(session)))) { + if ((hi = switch_channel_variable_first(channel))) { for (; hi; hi = switch_hash_next(hi)) { void *val; const void *var; diff --git a/src/mod/endpoints/mod_dingaling/mod_dingaling.c b/src/mod/endpoints/mod_dingaling/mod_dingaling.c index 534e0f2bd2..7ecb7f868b 100644 --- a/src/mod/endpoints/mod_dingaling/mod_dingaling.c +++ b/src/mod/endpoints/mod_dingaling/mod_dingaling.c @@ -477,7 +477,7 @@ static void pres_event_handler(switch_event_t *event) sql = switch_mprintf("select sub_from, sub_to,'%q','%q','%q','%q' from jabber_subscriptions where sub_to like '%%%q'", type, rpid, status, proto, from); - for (hi = switch_hash_first(switch_hash_pool_get(globals.profile_hash), globals.profile_hash); hi; hi = switch_hash_next(hi)) { + for (hi = switch_hash_first(NULL, globals.profile_hash); hi; hi = switch_hash_next(hi)) { switch_hash_this(hi, NULL, NULL, &val); profile = (mdl_profile_t *) val; @@ -572,7 +572,7 @@ static void roster_event_handler(switch_event_t *event) sql = switch_mprintf("select *,'%q' from jabber_subscriptions", status ? status : ""); } - for (hi = switch_hash_first(switch_hash_pool_get(globals.profile_hash), globals.profile_hash); hi; hi = switch_hash_next(hi)) { + for (hi = switch_hash_first(NULL, globals.profile_hash); hi; hi = switch_hash_next(hi)) { switch_hash_this(hi, NULL, NULL, &val); profile = (mdl_profile_t *) val; @@ -642,7 +642,7 @@ static void sign_off(void) sql = switch_mprintf("select * from jabber_subscriptions"); - for (hi = switch_hash_first(switch_hash_pool_get(globals.profile_hash), globals.profile_hash); hi; hi = switch_hash_next(hi)) { + for (hi = switch_hash_first(NULL, globals.profile_hash); hi; hi = switch_hash_next(hi)) { switch_hash_this(hi, NULL, NULL, &val); profile = (mdl_profile_t *) val; @@ -760,7 +760,7 @@ static int get_codecs(struct private_object *tech_pvt) return 0; } } else if (((tech_pvt->num_codecs = - switch_loadable_module_get_codecs(switch_core_session_get_pool(tech_pvt->session), tech_pvt->codecs, SWITCH_MAX_CODECS))) <= 0) { + switch_loadable_module_get_codecs(tech_pvt->codecs, SWITCH_MAX_CODECS))) <= 0) { switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "NO codecs?\n"); return 0; } diff --git a/src/mod/endpoints/mod_iax/mod_iax.c b/src/mod/endpoints/mod_iax/mod_iax.c index 7e50208512..7c1ea5d16f 100644 --- a/src/mod/endpoints/mod_iax/mod_iax.c +++ b/src/mod/endpoints/mod_iax/mod_iax.c @@ -230,7 +230,7 @@ static switch_status_t iax_set_codec(private_t * tech_pvt, struct iax_session *i switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "NO codecs?\n"); return SWITCH_STATUS_GENERR; } - } else if (((num_codecs = switch_loadable_module_get_codecs(switch_core_session_get_pool(tech_pvt->session), codecs, SWITCH_MAX_CODECS))) <= 0) { + } else if (((num_codecs = switch_loadable_module_get_codecs(codecs, SWITCH_MAX_CODECS))) <= 0) { switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "NO codecs?\n"); return SWITCH_STATUS_GENERR; } diff --git a/src/mod/endpoints/mod_sofia/mod_sofia.c b/src/mod/endpoints/mod_sofia/mod_sofia.c index ab5b2d1b47..09b061db90 100644 --- a/src/mod/endpoints/mod_sofia/mod_sofia.c +++ b/src/mod/endpoints/mod_sofia/mod_sofia.c @@ -1090,7 +1090,7 @@ static switch_status_t cmd_status(char **argv, int argc, switch_stream_handle_t stream->write_function(stream, "%25s\t%s\t %32s\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_hash_first(switch_hash_pool_get(mod_sofia_globals.profile_hash), mod_sofia_globals.profile_hash); hi; hi = switch_hash_next(hi)) { + for (hi = switch_hash_first(NULL, mod_sofia_globals.profile_hash); hi; hi = switch_hash_next(hi)) { switch_hash_this(hi, &vvar, NULL, &val); profile = (sofia_profile_t *) val; if (sofia_test_pflag(profile, PFLAG_RUNNING)) { diff --git a/src/mod/endpoints/mod_sofia/sofia_glue.c b/src/mod/endpoints/mod_sofia/sofia_glue.c index 1474a3a3b4..117743ad44 100644 --- a/src/mod/endpoints/mod_sofia/sofia_glue.c +++ b/src/mod/endpoints/mod_sofia/sofia_glue.c @@ -264,7 +264,7 @@ void sofia_glue_tech_prepare_codecs(private_object_t *tech_pvt) } } else { tech_pvt->num_codecs = - switch_loadable_module_get_codecs(switch_core_session_get_pool(tech_pvt->session), tech_pvt->codecs, + switch_loadable_module_get_codecs(tech_pvt->codecs, sizeof(tech_pvt->codecs) / sizeof(tech_pvt->codecs[0])); } @@ -574,7 +574,7 @@ switch_status_t sofia_glue_do_invite(switch_core_session_t *session) } SWITCH_STANDARD_STREAM(stream); - if ((hi = switch_channel_variable_first(channel, switch_core_session_get_pool(tech_pvt->session)))) { + if ((hi = switch_channel_variable_first(channel))) { for (; hi; hi = switch_hash_next(hi)) { switch_hash_this(hi, &vvar, NULL, &vval); if (vvar && vval) { @@ -1540,14 +1540,14 @@ void sofia_glue_del_profile(sofia_profile_t *profile) switch_mutex_lock(mod_sofia_globals.hash_mutex); - for (hi = switch_hash_first(switch_hash_pool_get(mod_sofia_globals.profile_hash), mod_sofia_globals.profile_hash); hi; hi = switch_hash_next(hi)) { + for (hi = switch_hash_first(NULL, mod_sofia_globals.profile_hash); hi; hi = switch_hash_next(hi)) { switch_hash_this(hi, &vvar, NULL, &vval); this_profile = (sofia_profile_t *) vval; if (this_profile == profile) { switch_core_hash_delete(mod_sofia_globals.profile_hash, vvar); } } - for (hi = switch_hash_first(switch_hash_pool_get(mod_sofia_globals.gateway_hash), mod_sofia_globals.gateway_hash); hi; hi = switch_hash_next(hi)) { + for (hi = switch_hash_first(NULL, mod_sofia_globals.gateway_hash); hi; hi = switch_hash_next(hi)) { switch_hash_this(hi, &vvar, NULL, &vval); this_gateway = (sofia_gateway_t *) vval; diff --git a/src/mod/endpoints/mod_sofia/sofia_presence.c b/src/mod/endpoints/mod_sofia/sofia_presence.c index 7133c9a873..f0691cca15 100644 --- a/src/mod/endpoints/mod_sofia/sofia_presence.c +++ b/src/mod/endpoints/mod_sofia/sofia_presence.c @@ -116,7 +116,7 @@ void sofia_presence_cancel(void) if ((sql = switch_mprintf("select 0,'unavailable','unavailable',* from sip_subscriptions where event='presence'"))) { switch_mutex_lock(mod_sofia_globals.hash_mutex); - for (hi = switch_hash_first(switch_hash_pool_get(mod_sofia_globals.profile_hash), mod_sofia_globals.profile_hash); hi; hi = switch_hash_next(hi)) { + for (hi = switch_hash_first(NULL, mod_sofia_globals.profile_hash); hi; hi = switch_hash_next(hi)) { switch_hash_this(hi, NULL, NULL, &val); profile = (sofia_profile_t *) val; if (!(profile->pflags & PFLAG_PRESENCE)) { @@ -294,7 +294,7 @@ void sofia_presence_event_handler(switch_event_t *event) assert(sql != NULL); switch_mutex_lock(mod_sofia_globals.hash_mutex); - for (hi = switch_hash_first(switch_hash_pool_get(mod_sofia_globals.profile_hash), mod_sofia_globals.profile_hash); hi; hi = switch_hash_next(hi)) { + for (hi = switch_hash_first(NULL, mod_sofia_globals.profile_hash); hi; hi = switch_hash_next(hi)) { switch_hash_this(hi, NULL, NULL, &val); profile = (sofia_profile_t *) val; if (!(profile->pflags & PFLAG_PRESENCE)) { @@ -396,7 +396,7 @@ void sofia_presence_event_handler(switch_event_t *event) } switch_mutex_lock(mod_sofia_globals.hash_mutex); - for (hi = switch_hash_first(switch_hash_pool_get(mod_sofia_globals.profile_hash), mod_sofia_globals.profile_hash); hi; hi = switch_hash_next(hi)) { + for (hi = switch_hash_first(NULL, mod_sofia_globals.profile_hash); hi; hi = switch_hash_next(hi)) { switch_hash_this(hi, NULL, NULL, &val); profile = (sofia_profile_t *) val; if (!(profile->pflags & PFLAG_PRESENCE)) { diff --git a/src/mod/formats/mod_native_file/mod_native_file.c b/src/mod/formats/mod_native_file/mod_native_file.c index db22600e4f..280c054386 100644 --- a/src/mod/formats/mod_native_file/mod_native_file.c +++ b/src/mod/formats/mod_native_file/mod_native_file.c @@ -144,7 +144,7 @@ SWITCH_MODULE_LOAD_FUNCTION(mod_native_file_load) switch_file_interface_t *file_interface; const switch_codec_implementation_t *codecs[SWITCH_MAX_CODECS]; - uint32_t num_codecs = switch_loadable_module_get_codecs(NULL, codecs, sizeof(codecs) / sizeof(codecs[0])); + uint32_t num_codecs = switch_loadable_module_get_codecs(codecs, sizeof(codecs) / sizeof(codecs[0])); uint32_t x; for (x = 0; x < num_codecs; x++) { diff --git a/src/mod/languages/mod_mono/mod_mono.c b/src/mod/languages/mod_mono/mod_mono.c index 95943320dc..0468d074c5 100644 --- a/src/mod/languages/mod_mono/mod_mono.c +++ b/src/mod/languages/mod_mono/mod_mono.c @@ -142,7 +142,7 @@ SWITCH_MODULE_LOAD_FUNCTION(mod_mono_load) /* Finally, go through and initialise each plugin before returning SUCCESS */ switch_hash_index_t *p = NULL; - for (p = switch_hash_first(mono_pool, globals.plugins); p; p = switch_hash_next(p)) { + for (p = switch_hash_first(NULL, globals.plugins); p; p = switch_hash_next(p)) { mono_plugin *plugin = (mono_plugin *) switch_core_alloc(mono_pool, sizeof(*plugin)); switch_ssize_t *key_length = NULL; const void *key = NULL; diff --git a/src/switch_channel.c b/src/switch_channel.c index 700cc26463..b787fdfd7a 100644 --- a/src/switch_channel.c +++ b/src/switch_channel.c @@ -342,15 +342,17 @@ SWITCH_DECLARE(void) switch_channel_variable_last(switch_channel_t *channel) } } -SWITCH_DECLARE(switch_hash_index_t *) switch_channel_variable_first(switch_channel_t *channel, switch_memory_pool_t *pool) +SWITCH_DECLARE(switch_hash_index_t *) switch_channel_variable_first(switch_channel_t *channel) { switch_hash_index_t *hi; assert(channel != NULL); - if ((hi = switch_hash_first(pool, channel->variables))) { - switch_mutex_lock(channel->profile_mutex); + switch_mutex_lock(channel->profile_mutex); + if ((hi = switch_hash_first(NULL, channel->variables))) { channel->vi = 1; + } else { + switch_mutex_unlock(channel->profile_mutex); } return hi; @@ -818,7 +820,7 @@ SWITCH_DECLARE(void) switch_channel_event_set_data(switch_channel_t *channel, sw } /* Index Variables */ - for (hi = switch_hash_first(switch_core_session_get_pool(channel->session), channel->variables); hi; hi = switch_hash_next(hi)) { + for (hi = switch_hash_first(NULL, channel->variables); hi; hi = switch_hash_next(hi)) { char buf[1024]; switch_hash_this(hi, &var, NULL, &val); if (var && val) { diff --git a/src/switch_core_session.c b/src/switch_core_session.c index 799de84c8c..2f40faa921 100644 --- a/src/switch_core_session.c +++ b/src/switch_core_session.c @@ -81,7 +81,7 @@ SWITCH_DECLARE(void) switch_core_session_hupall(switch_call_cause_t cause) uint32_t loops = 0; switch_mutex_lock(session_manager.session_table_mutex); - for (hi = switch_hash_first(session_manager.memory_pool, session_manager.session_table); hi; hi = switch_hash_next(hi)) { + for (hi = switch_hash_first(NULL, session_manager.session_table); hi; hi = switch_hash_next(hi)) { switch_hash_this(hi, NULL, NULL, &val); if (val) { session = (switch_core_session_t *) val; @@ -388,10 +388,6 @@ SWITCH_DECLARE(switch_status_t) switch_core_session_queue_message(switch_core_se assert(session != NULL); - if (!session->message_queue) { - switch_queue_create(&session->message_queue, SWITCH_MESSAGE_QUEUE_LEN, session->pool); - } - if (session->message_queue) { if (switch_queue_trypush(session->message_queue, message) == SWITCH_STATUS_SUCCESS) { status = SWITCH_STATUS_SUCCESS; @@ -477,10 +473,6 @@ SWITCH_DECLARE(switch_status_t) switch_core_session_queue_event(switch_core_sess assert(session != NULL); - if (!session->event_queue) { - switch_queue_create(&session->event_queue, SWITCH_EVENT_QUEUE_LEN, session->pool); - } - if (session->event_queue) { if (switch_queue_trypush(session->event_queue, *event) == SWITCH_STATUS_SUCCESS) { *event = NULL; @@ -522,10 +514,6 @@ SWITCH_DECLARE(switch_status_t) switch_core_session_queue_private_event(switch_c assert(session != NULL); - if (!session->private_event_queue) { - switch_queue_create(&session->private_event_queue, SWITCH_EVENT_QUEUE_LEN, session->pool); - } - if (session->private_event_queue) { (*event)->event_id = SWITCH_EVENT_PRIVATE_COMMAND; if (switch_queue_trypush(session->private_event_queue, *event) == SWITCH_STATUS_SUCCESS) { @@ -818,6 +806,9 @@ SWITCH_DECLARE(switch_core_session_t *) switch_core_session_request(const switch switch_thread_rwlock_create(&session->bug_rwlock, session->pool); switch_thread_cond_create(&session->cond, session->pool); switch_thread_rwlock_create(&session->rwlock, session->pool); + switch_queue_create(&session->message_queue, SWITCH_MESSAGE_QUEUE_LEN, session->pool); + switch_queue_create(&session->event_queue, SWITCH_EVENT_QUEUE_LEN, session->pool); + switch_queue_create(&session->private_event_queue, SWITCH_EVENT_QUEUE_LEN, session->pool); snprintf(session->name, sizeof(session->name), "%"SWITCH_SIZE_T_FMT, session->id); switch_mutex_lock(session_manager.session_table_mutex); diff --git a/src/switch_ivr.c b/src/switch_ivr.c index 8f4ad2e7fd..eae808c822 100644 --- a/src/switch_ivr.c +++ b/src/switch_ivr.c @@ -967,7 +967,7 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_transfer_variable(switch_core_session void *vval; const void *vvar; - if ((hi = switch_channel_variable_first(chana, switch_core_session_get_pool(sessa)))) { + if ((hi = switch_channel_variable_first(chana))) { for (; hi; hi = switch_hash_next(hi)) { switch_hash_this(hi, &vvar, NULL, &vval); if (vvar && vval && (!prefix || (var && !strncmp((char *) vvar, var, strlen(var))))) { @@ -1330,7 +1330,7 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_generate_xml_cdr(switch_core_session_ } } - if (((hi = switch_channel_variable_first(channel, switch_core_session_get_pool(session))))) { + if (((hi = switch_channel_variable_first(channel)))) { for (; hi; hi = switch_hash_next(hi)) { switch_hash_this(hi, &vvar, NULL, &vval); if (vvar && vval) { diff --git a/src/switch_ivr_originate.c b/src/switch_ivr_originate.c index de32ce367a..f7d017cc70 100644 --- a/src/switch_ivr_originate.c +++ b/src/switch_ivr_originate.c @@ -323,7 +323,7 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_originate(switch_core_session_t *sess assert(caller_channel != NULL); /* Copy all the channel variables into the event */ - if ((hi = switch_channel_variable_first(caller_channel, switch_core_session_get_pool(session)))) { + if ((hi = switch_channel_variable_first(caller_channel))) { for (; hi; hi = switch_hash_next(hi)) { switch_hash_this(hi, &vvar, NULL, &vval); if (vvar && vval) { diff --git a/src/switch_loadable_module.c b/src/switch_loadable_module.c index 3aea3b1a0c..4a9ce82a31 100644 --- a/src/switch_loadable_module.c +++ b/src/switch_loadable_module.c @@ -108,7 +108,7 @@ static void switch_loadable_module_runtime(void) switch_loadable_module_t *module; switch_mutex_lock(loadable_modules.mutex); - for (hi = switch_hash_first(loadable_modules.pool, loadable_modules.module_hash); hi; hi = switch_hash_next(hi)) { + for (hi = switch_hash_first(NULL, loadable_modules.module_hash); hi; hi = switch_hash_next(hi)) { switch_hash_this(hi, NULL, NULL, &val); module = (switch_loadable_module_t *) val; @@ -1078,7 +1078,7 @@ SWITCH_DECLARE(void) switch_loadable_module_shutdown(void) void *val; switch_loadable_module_t *module; - for (hi = switch_hash_first(loadable_modules.pool, loadable_modules.module_hash); hi; hi = switch_hash_next(hi)) { + for (hi = switch_hash_first(NULL, loadable_modules.module_hash); hi; hi = switch_hash_next(hi)) { switch_hash_this(hi, NULL, NULL, &val); module = (switch_loadable_module_t *) val; do_shutdown(module); @@ -1174,7 +1174,7 @@ SWITCH_DECLARE(switch_management_interface_t *) switch_loadable_module_get_manag return switch_core_hash_find_locked(loadable_modules.management_hash, relative_oid, loadable_modules.mutex); } -SWITCH_DECLARE(int) switch_loadable_module_get_codecs(switch_memory_pool_t *pool, const switch_codec_implementation_t **array, int arraylen) +SWITCH_DECLARE(int) switch_loadable_module_get_codecs(const switch_codec_implementation_t **array, int arraylen) { switch_hash_index_t *hi; void *val; @@ -1183,7 +1183,7 @@ SWITCH_DECLARE(int) switch_loadable_module_get_codecs(switch_memory_pool_t *pool const switch_codec_implementation_t *imp; switch_mutex_lock(loadable_modules.mutex); - for (hi = switch_hash_first(pool, loadable_modules.codec_hash); hi; hi = switch_hash_next(hi)) { + for (hi = switch_hash_first(NULL, loadable_modules.codec_hash); hi; hi = switch_hash_next(hi)) { switch_hash_this(hi, NULL, NULL, &val); codec_interface = (switch_codec_interface_t *) val; /* Look for a 20ms implementation because it's the safest choice */