]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
skypopen: adding some guards against NULL sessions and channels
authorGiovanni Maruzzelli <gmaruzz@gmail.com>
Sat, 21 May 2011 07:45:39 +0000 (02:45 -0500)
committerGiovanni Maruzzelli <gmaruzz@gmail.com>
Sat, 21 May 2011 07:45:39 +0000 (02:45 -0500)
src/mod/endpoints/mod_skypopen/skypopen_protocol.c

index 391a23caaf64c6dcea31572da3dfa4b8c9e5dbff..4f5f129344818157e3bd409530f47b470599e939 100644 (file)
@@ -1739,19 +1739,23 @@ void *skypopen_do_skypeapi_thread_func(void *obj)
                        if (session) {
                                switch_channel_t *channel = switch_core_session_get_channel(session);
 
+                               if(channel){
 
-                               switch_mutex_lock(tech_pvt->flag_mutex);
-                               switch_clear_flag(tech_pvt, TFLAG_IO);
-                               switch_clear_flag(tech_pvt, TFLAG_VOICE);
-                               if (switch_test_flag(tech_pvt, TFLAG_PROGRESS)) {
-                                       switch_clear_flag(tech_pvt, TFLAG_PROGRESS);
-                               }
-                               switch_mutex_unlock(tech_pvt->flag_mutex);
+                                       switch_mutex_lock(tech_pvt->flag_mutex);
+                                       switch_clear_flag(tech_pvt, TFLAG_IO);
+                                       switch_clear_flag(tech_pvt, TFLAG_VOICE);
+                                       if (switch_test_flag(tech_pvt, TFLAG_PROGRESS)) {
+                                               switch_clear_flag(tech_pvt, TFLAG_PROGRESS);
+                                       }
+                                       switch_mutex_unlock(tech_pvt->flag_mutex);
 
 
-                               switch_core_session_rwunlock(session);
-                               WARNINGA("Closing session for %s\n", SKYPOPEN_P_LOG, interfacename);
-                               switch_channel_hangup(channel, SWITCH_CAUSE_CRASH);
+                                       switch_core_session_rwunlock(session);
+                                       WARNINGA("Closing session for %s\n", SKYPOPEN_P_LOG, interfacename);
+                                       switch_channel_hangup(channel, SWITCH_CAUSE_CRASH);
+                               } else {
+                                       WARNINGA("NO CHANNEL ?\n", SKYPOPEN_P_LOG);
+                               }
                        }
 
                        WARNINGA("Removing skype interface %s\n", SKYPOPEN_P_LOG, interfacename);
@@ -1772,19 +1776,23 @@ void *skypopen_do_skypeapi_thread_func(void *obj)
                                switch_channel_t *channel = switch_core_session_get_channel(session);
 
 
-                               switch_mutex_lock(tech_pvt->flag_mutex);
-                               switch_clear_flag(tech_pvt, TFLAG_IO);
-                               switch_clear_flag(tech_pvt, TFLAG_VOICE);
-                               if (switch_test_flag(tech_pvt, TFLAG_PROGRESS)) {
-                                       switch_clear_flag(tech_pvt, TFLAG_PROGRESS);
-                               }
-                               switch_mutex_unlock(tech_pvt->flag_mutex);
+                               if(channel){
+                                       switch_mutex_lock(tech_pvt->flag_mutex);
+                                       switch_clear_flag(tech_pvt, TFLAG_IO);
+                                       switch_clear_flag(tech_pvt, TFLAG_VOICE);
+                                       if (switch_test_flag(tech_pvt, TFLAG_PROGRESS)) {
+                                               switch_clear_flag(tech_pvt, TFLAG_PROGRESS);
+                                       }
+                                       switch_mutex_unlock(tech_pvt->flag_mutex);
 
 
-                               switch_core_session_rwunlock(session);
-                               WARNINGA("Closing session for %s\n", SKYPOPEN_P_LOG, interfacename);
-                               switch_channel_hangup(channel, SWITCH_CAUSE_CRASH);
+                                       switch_core_session_rwunlock(session);
+                                       WARNINGA("Closing session for %s\n", SKYPOPEN_P_LOG, interfacename);
+                                       switch_channel_hangup(channel, SWITCH_CAUSE_CRASH);
 
+                               } else {
+                                       WARNINGA("NO CHANNEL ?\n", SKYPOPEN_P_LOG);
+                               }
                                //skypopen_sleep(500000);
                        }