diff --git a/src/mod/endpoints/mod_sofia/sofia.c b/src/mod/endpoints/mod_sofia/sofia.c index fb35cd8ce1..b9456ccfe1 100644 --- a/src/mod/endpoints/mod_sofia/sofia.c +++ b/src/mod/endpoints/mod_sofia/sofia.c @@ -1920,6 +1920,11 @@ static void sofia_handle_sip_i_state(switch_core_session_t *session, int status, break; case nua_callstate_terminating: + if (session) { + if (!switch_test_flag(tech_pvt, TFLAG_BYE)) { + switch_set_flag_locked(tech_pvt, TFLAG_BYE); + } + } break; case nua_callstate_terminated: if (session) { diff --git a/src/switch_event.c b/src/switch_event.c index 3364da1209..fd37212479 100644 --- a/src/switch_event.c +++ b/src/switch_event.c @@ -411,8 +411,8 @@ SWITCH_DECLARE(switch_status_t) switch_event_init(switch_memory_pool_t *pool) switch_queue_create(&EVENT_QUEUE[0], POOL_COUNT_MAX + 10, THRUNTIME_POOL); switch_queue_create(&EVENT_QUEUE[1], POOL_COUNT_MAX + 10, THRUNTIME_POOL); switch_queue_create(&EVENT_QUEUE[2], POOL_COUNT_MAX + 10, THRUNTIME_POOL); - switch_queue_create(&EVENT_RECYCLE_QUEUE, SWITCH_CORE_QUEUE_LEN, THRUNTIME_POOL); - switch_queue_create(&EVENT_HEADER_RECYCLE_QUEUE, SWITCH_CORE_QUEUE_LEN, THRUNTIME_POOL); + switch_queue_create(&EVENT_RECYCLE_QUEUE, 250000, THRUNTIME_POOL); + switch_queue_create(&EVENT_HEADER_RECYCLE_QUEUE, 250000, THRUNTIME_POOL); switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "Activate Eventing Engine.\n"); switch_mutex_init(&BLOCK, SWITCH_MUTEX_NESTED, RUNTIME_POOL); diff --git a/src/switch_rtp.c b/src/switch_rtp.c index c55b4da8bf..c0145fbbb5 100644 --- a/src/switch_rtp.c +++ b/src/switch_rtp.c @@ -765,12 +765,17 @@ SWITCH_DECLARE(switch_rtp_t *) switch_rtp_new(const char *rx_host, if (switch_rtp_create(&rtp_session, payload, samples_per_interval, ms_per_packet, flags, timer_name, err, pool) != SWITCH_STATUS_SUCCESS) { goto end; } - + + switch_mutex_lock(rtp_session->flag_mutex); + if (switch_rtp_set_local_address(rtp_session, rx_host, rx_port, err) != SWITCH_STATUS_SUCCESS) { + switch_mutex_unlock(rtp_session->flag_mutex); rtp_session = NULL; + goto end; } if (switch_rtp_set_remote_address(rtp_session, tx_host, tx_port, err) != SWITCH_STATUS_SUCCESS) { + switch_mutex_unlock(rtp_session->flag_mutex); rtp_session = NULL; goto end; } @@ -778,6 +783,7 @@ SWITCH_DECLARE(switch_rtp_t *) switch_rtp_new(const char *rx_host, end: if (rtp_session) { + switch_mutex_unlock(rtp_session->flag_mutex); rtp_session->ready = 2; rtp_session->rx_host = switch_core_strdup(rtp_session->pool, rx_host); rtp_session->rx_port = rx_port;