]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
fix MODENDP-98
authorAnthony Minessale <anthony.minessale@gmail.com>
Mon, 17 Mar 2008 16:12:38 +0000 (16:12 +0000)
committerAnthony Minessale <anthony.minessale@gmail.com>
Mon, 17 Mar 2008 16:12:38 +0000 (16:12 +0000)
git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@7900 d0543943-73ff-0310-b7d9-9358b9ac24b2

src/mod/endpoints/mod_sofia/mod_sofia.h
src/mod/endpoints/mod_sofia/sofia_glue.c

index 59852ddbc3ac5fb28e01371891fc9c6403219947..9e20028c7e4ee29e308a9f3a7a6de4fe3985711b 100644 (file)
@@ -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);
index 1049e57bc2d87847161c74a34b2fb47f6da44223..64d5af293d764d9025a64d28816cc40410ffaaf8 100644 (file)
@@ -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)