diff --git a/src/mod/applications/mod_commands/mod_commands.c b/src/mod/applications/mod_commands/mod_commands.c index 4e9fb61845..f4102c5d21 100644 --- a/src/mod/applications/mod_commands/mod_commands.c +++ b/src/mod/applications/mod_commands/mod_commands.c @@ -117,7 +117,7 @@ static switch_status_t kill_function(char *dest, switch_core_session_t *isession return SWITCH_STATUS_FALSE; } - if ((session = switch_core_session_locate(dest))) { + if (dest && (session = switch_core_session_locate(dest))) { switch_channel_t *channel = switch_core_session_get_channel(session); switch_core_session_kill_channel(session, SWITCH_SIG_KILL); switch_channel_hangup(channel, SWITCH_CAUSE_NORMAL_CLEARING); diff --git a/src/switch_core.c b/src/switch_core.c index ed7417a01f..dae2b85cb3 100644 --- a/src/switch_core.c +++ b/src/switch_core.c @@ -269,18 +269,22 @@ SWITCH_DECLARE(switch_core_session_t *) switch_core_session_locate(char *uuid_st { switch_core_session_t *session; - switch_mutex_lock(runtime.session_table_mutex); - if ((session = switch_core_hash_find(runtime.session_table, uuid_str))) { - /* Acquire a read lock on the session */ - if (switch_thread_rwlock_tryrdlock(session->rwlock) != SWITCH_STATUS_SUCCESS) { - /* not available, forget it */ - session = NULL; + if (uuid_str) { + switch_mutex_lock(runtime.session_table_mutex); + if ((session = switch_core_hash_find(runtime.session_table, uuid_str))) { + /* Acquire a read lock on the session */ + if (switch_thread_rwlock_tryrdlock(session->rwlock) != SWITCH_STATUS_SUCCESS) { + /* not available, forget it */ + session = NULL; + } } - } - switch_mutex_unlock(runtime.session_table_mutex); + switch_mutex_unlock(runtime.session_table_mutex); - /* if its not NULL, now it's up to you to rwunlock this */ - return session; + /* if its not NULL, now it's up to you to rwunlock this */ + return session; + } else { + return NULL; + } } SWITCH_DECLARE(void) switch_core_session_hupall(void)