From fbccbd1e236f81b787fc46e6366154ed7fc48d71 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Mon, 17 Mar 2008 16:12:38 +0000 Subject: [PATCH] fix MODENDP-98 git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@7900 d0543943-73ff-0310-b7d9-9358b9ac24b2 --- src/mod/endpoints/mod_sofia/mod_sofia.h | 2 +- src/mod/endpoints/mod_sofia/sofia_glue.c | 20 ++++++++++---------- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/src/mod/endpoints/mod_sofia/mod_sofia.h b/src/mod/endpoints/mod_sofia/mod_sofia.h index 59852ddbc3..9e20028c7e 100644 --- a/src/mod/endpoints/mod_sofia/mod_sofia.h +++ b/src/mod/endpoints/mod_sofia/mod_sofia.h @@ -512,7 +512,7 @@ void sofia_presence_handle_sip_i_subscribe(int status, char const *phrase, nua_t *nua, sofia_profile_t *profile, nua_handle_t *nh, sofia_private_t *sofia_private, sip_t const *sip, tagi_t tags[]); -void sofia_glue_execute_sql(sofia_profile_t *profile, char **sqlp, switch_bool_t dyn); +void sofia_glue_execute_sql(sofia_profile_t *profile, char **sqlp, switch_bool_t sql_already_dynamic); void sofia_glue_actually_execute_sql(sofia_profile_t *profile, switch_bool_t master, char *sql, switch_mutex_t *mutex); void sofia_reg_check_expire(sofia_profile_t *profile, time_t now); void sofia_reg_check_gateway(sofia_profile_t *profile, time_t now); diff --git a/src/mod/endpoints/mod_sofia/sofia_glue.c b/src/mod/endpoints/mod_sofia/sofia_glue.c index 1049e57bc2..64d5af293d 100644 --- a/src/mod/endpoints/mod_sofia/sofia_glue.c +++ b/src/mod/endpoints/mod_sofia/sofia_glue.c @@ -2487,7 +2487,7 @@ void sofia_glue_sql_close(sofia_profile_t *profile) } -void sofia_glue_execute_sql(sofia_profile_t *profile, char **sqlp, switch_bool_t dyn) +void sofia_glue_execute_sql(sofia_profile_t *profile, char **sqlp, switch_bool_t sql_already_dynamic) { switch_status_t status = SWITCH_STATUS_FALSE; char *d_sql = NULL, *sql; @@ -2496,7 +2496,7 @@ void sofia_glue_execute_sql(sofia_profile_t *profile, char **sqlp, switch_bool_t sql = *sqlp; if (profile->sql_queue) { - if (dyn) { + if (sql_already_dynamic) { d_sql = sql; } else { d_sql = strdup(sql); @@ -2504,19 +2504,19 @@ void sofia_glue_execute_sql(sofia_profile_t *profile, char **sqlp, switch_bool_t switch_assert(d_sql); status = switch_queue_trypush(profile->sql_queue, d_sql); + } else if (sql_already_dynamic) { + d_sql = sql; } - if (status == SWITCH_STATUS_SUCCESS) { - if (dyn) { - *sqlp = NULL; - } - } else { - if (!dyn) { - switch_safe_free(d_sql); - } + if (status != SWITCH_STATUS_SUCCESS) { sofia_glue_actually_execute_sql(profile, SWITCH_FALSE, sql, profile->ireg_mutex); } + switch_safe_free(d_sql); + + if (sql_already_dynamic) { + *sqlp = NULL; + } } void sofia_glue_actually_execute_sql(sofia_profile_t *profile, switch_bool_t master, char *sql, switch_mutex_t *mutex)