From b15aff2c11ecdf6e8335af95dddff0dc00243f9b Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Mon, 16 Apr 2007 20:51:19 +0000 Subject: [PATCH] ... git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@4950 d0543943-73ff-0310-b7d9-9358b9ac24b2 --- src/mod/endpoints/mod_wanpipe/mod_wanpipe.c | 4 ++-- src/switch_core_session.c | 18 ++++++++++-------- 2 files changed, 12 insertions(+), 10 deletions(-) diff --git a/src/mod/endpoints/mod_wanpipe/mod_wanpipe.c b/src/mod/endpoints/mod_wanpipe/mod_wanpipe.c index b5c153406b..73b0fd821a 100644 --- a/src/mod/endpoints/mod_wanpipe/mod_wanpipe.c +++ b/src/mod/endpoints/mod_wanpipe/mod_wanpipe.c @@ -1433,7 +1433,7 @@ static int on_ringing(struct sangoma_pri *spri, sangoma_pri_event_t event_type, static int on_ring(struct sangoma_pri *spri, sangoma_pri_event_t event_type, pri_event *pevent) { char name[128]; - switch_core_session_t *session; + switch_core_session_t *session = NULL; switch_channel_t *channel; struct channel_map *chanmap; int ret = 0; @@ -1441,7 +1441,7 @@ static int on_ring(struct sangoma_pri *spri, sangoma_pri_event_t event_type, pri switch_mutex_lock(globals.channel_mutex); chanmap = spri->private_info; - if (switch_core_session_locate(chanmap->map[pevent->ring.channel])) { + if ((session = switch_core_session_locate(chanmap->map[pevent->ring.channel]))) { switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_NOTICE, "--Duplicate Ring on channel s%dc%d (ignored)\n", spri->span, pevent->ring.channel); switch_core_session_rwunlock(session); diff --git a/src/switch_core_session.c b/src/switch_core_session.c index 30b7327cc1..26e290ffdb 100644 --- a/src/switch_core_session.c +++ b/src/switch_core_session.c @@ -225,22 +225,24 @@ SWITCH_DECLARE(switch_call_cause_t) switch_core_session_outgoing_channel(switch_ } } - if ((cause = endpoint_interface->io_routines->outgoing_channel(session, outgoing_profile, new_session, pool)) == SWITCH_CAUSE_SUCCESS) { - if (session) { - for (ptr = session->event_hooks.outgoing_channel; ptr; ptr = ptr->next) { - if ((status = ptr->outgoing_channel(session, caller_profile, *new_session)) != SWITCH_STATUS_SUCCESS) { - break; - } + if ((cause = endpoint_interface->io_routines->outgoing_channel(session, outgoing_profile, new_session, pool)) != SWITCH_CAUSE_SUCCESS) { + return cause; + } + + if (session) { + for (ptr = session->event_hooks.outgoing_channel; ptr; ptr = ptr->next) { + if ((status = ptr->outgoing_channel(session, caller_profile, *new_session)) != SWITCH_STATUS_SUCCESS) { + break; } } - } else { - return cause; } } else { switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Could not locate outgoing channel interface for %s\n", endpoint_name); return SWITCH_CAUSE_CHAN_NOT_IMPLEMENTED; } + assert(*new_session != NULL); + if (*new_session) { switch_caller_profile_t *profile = NULL, *peer_profile = NULL, *cloned_profile = NULL; switch_event_t *event;