]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
...
authorAnthony Minessale <anthony.minessale@gmail.com>
Mon, 16 Apr 2007 20:51:19 +0000 (20:51 +0000)
committerAnthony Minessale <anthony.minessale@gmail.com>
Mon, 16 Apr 2007 20:51:19 +0000 (20:51 +0000)
git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@4950 d0543943-73ff-0310-b7d9-9358b9ac24b2

src/mod/endpoints/mod_wanpipe/mod_wanpipe.c
src/switch_core_session.c

index b5c153406b9cf69a1ee0427e91547f1064396b5c..73b0fd821a134b145702e2ae657e04154910f118 100644 (file)
@@ -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);
index 30b7327cc1785879c468bc6b2b2f6be1c0063b1a..26e290ffdbfc20953f2674de685542d566e250cc 100644 (file)
@@ -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;