don't seg in edge case error conditions

This commit is contained in:
Michael Jerris 2011-01-05 09:54:27 -05:00
parent 5254df0466
commit 9ee13b723e
1 changed files with 27 additions and 0 deletions

View File

@ -582,6 +582,8 @@ static int check_caller_outbound_call(const char *key)
{
int x = 0;
if (!key) return x;
switch_mutex_lock(globals.caller_orig_mutex);
x = !!switch_core_hash_find(globals.caller_orig_hash, key);
switch_mutex_unlock(globals.caller_orig_mutex);
@ -592,6 +594,8 @@ static int check_caller_outbound_call(const char *key)
static void add_caller_outbound_call(const char *key, switch_call_cause_t *cancel_cause)
{
if (!key) return;
switch_mutex_lock(globals.caller_orig_mutex);
switch_core_hash_insert(globals.caller_orig_hash, key, cancel_cause);
switch_mutex_unlock(globals.caller_orig_mutex);
@ -599,6 +603,8 @@ static void add_caller_outbound_call(const char *key, switch_call_cause_t *cance
static void del_caller_outbound_call(const char *key)
{
if (!key) return;
switch_mutex_lock(globals.caller_orig_mutex);
switch_core_hash_delete(globals.caller_orig_hash, key);
switch_mutex_unlock(globals.caller_orig_mutex);
@ -608,6 +614,8 @@ static void cancel_caller_outbound_call(const char *key, switch_call_cause_t cau
{
switch_call_cause_t *cancel_cause = NULL;
if (!key) return;
switch_mutex_lock(globals.caller_orig_mutex);
if ((cancel_cause = (switch_call_cause_t *) switch_core_hash_find(globals.caller_orig_hash, key))) {
*cancel_cause = cause;
@ -624,6 +632,8 @@ static int check_bridge_call(const char *key)
{
int x = 0;
if (!key) return x;
switch_mutex_lock(globals.bridge_mutex);
x = !!switch_core_hash_find(globals.bridge_hash, key);
switch_mutex_unlock(globals.bridge_mutex);
@ -634,6 +644,8 @@ static int check_bridge_call(const char *key)
static void add_bridge_call(const char *key)
{
if (!key) return;
switch_mutex_lock(globals.bridge_mutex);
switch_core_hash_insert(globals.bridge_hash, key, (void *)&marker);
switch_mutex_unlock(globals.bridge_mutex);
@ -651,6 +663,8 @@ static int check_consumer_outbound_call(const char *key)
{
int x = 0;
if (!key) return x;
switch_mutex_lock(globals.consumer_orig_mutex);
x = !!switch_core_hash_find(globals.consumer_orig_hash, key);
switch_mutex_unlock(globals.consumer_orig_mutex);
@ -660,6 +674,8 @@ static int check_consumer_outbound_call(const char *key)
static void add_consumer_outbound_call(const char *key, switch_call_cause_t *cancel_cause)
{
if (!key) return;
switch_mutex_lock(globals.consumer_orig_mutex);
switch_core_hash_insert(globals.consumer_orig_hash, key, cancel_cause);
switch_mutex_unlock(globals.consumer_orig_mutex);
@ -667,6 +683,8 @@ static void add_consumer_outbound_call(const char *key, switch_call_cause_t *can
static void del_consumer_outbound_call(const char *key)
{
if (!key) return;
switch_mutex_lock(globals.consumer_orig_mutex);
switch_core_hash_delete(globals.consumer_orig_hash, key);
switch_mutex_unlock(globals.consumer_orig_mutex);
@ -676,6 +694,8 @@ static void cancel_consumer_outbound_call(const char *key, switch_call_cause_t c
{
switch_call_cause_t *cancel_cause = NULL;
if (!key) return;
switch_mutex_lock(globals.consumer_orig_mutex);
if ((cancel_cause = (switch_call_cause_t *) switch_core_hash_find(globals.consumer_orig_hash, key))) {
*cancel_cause = cause;
@ -1949,6 +1969,8 @@ static uint32_t fifo_add_outbound(const char *node_name, const char *url, uint32
priority = MAX_PRI - 1;
}
if (!node_name) return 0;
switch_mutex_lock(globals.mutex);
if (!(node = switch_core_hash_find(globals.fifo_hash, node_name))) {
@ -4166,6 +4188,8 @@ static void fifo_member_add(char *fifo_name, char *originate_string, int simo_co
char *sql, *name_dup, *p;
fifo_node_t *node = NULL;
if (!fifo_name) return;
if (switch_stristr("fifo_outbound_uuid=", originate_string)) {
extract_fifo_outbound_uuid(originate_string, digest, sizeof(digest));
} else {
@ -4213,6 +4237,9 @@ static void fifo_member_del(char *fifo_name, char *originate_string)
callback_t cbt = { 0 };
fifo_node_t *node = NULL;
if (!fifo_name) return;
if (switch_stristr("fifo_outbound_uuid=", originate_string)) {
extract_fifo_outbound_uuid(originate_string, digest, sizeof(digest));
} else {