mirror of
https://github.com/signalwire/freeswitch.git
synced 2026-10-21 10:44:16 +00:00
support multiple subscriptions for sla goodies
git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@7793 d0543943-73ff-0310-b7d9-9358b9ac24b2
This commit is contained in:
1 parent
c2d18621e3
commit
26d197cf16
6 files changed
+97
-96
No files matched your search
@@ -2443,27 +2443,34 @@ void sofia_glue_sql_close(sofia_profile_t *profile)
|
||||
}
|
||||
|
||||
|
||||
void sofia_glue_execute_sql(sofia_profile_t *profile, switch_bool_t master, char *sql, switch_mutex_t *mutex)
|
||||
void sofia_glue_execute_sql(sofia_profile_t *profile, char **sqlp, switch_bool_t dyn)
|
||||
{
|
||||
switch_status_t status = SWITCH_STATUS_FALSE;
|
||||
sofia_sql_job_t *job = NULL;
|
||||
char *d_sql = NULL, *sql;
|
||||
|
||||
switch_assert(sqlp && *sqlp);
|
||||
sql = *sqlp;
|
||||
|
||||
if (profile->sql_queue) {
|
||||
switch_zmalloc(job, sizeof(*job));
|
||||
if (dyn) {
|
||||
d_sql = sql;
|
||||
} else {
|
||||
d_sql = strdup(sql);
|
||||
}
|
||||
|
||||
job->sql = strdup(sql);
|
||||
switch_assert(job->sql);
|
||||
job->master = master;
|
||||
|
||||
status = switch_queue_trypush(profile->sql_queue, job);
|
||||
switch_assert(d_sql);
|
||||
status = switch_queue_trypush(profile->sql_queue, d_sql);
|
||||
}
|
||||
|
||||
if (status != SWITCH_STATUS_SUCCESS) {
|
||||
if (job) {
|
||||
free(job->sql);
|
||||
free(job);
|
||||
if (status == SWITCH_STATUS_SUCCESS) {
|
||||
if (dyn) {
|
||||
*sqlp = NULL;
|
||||
}
|
||||
sofia_glue_actually_execute_sql(profile, master, sql, mutex);
|
||||
} else {
|
||||
if (!dyn) {
|
||||
switch_safe_free(d_sql);
|
||||
}
|
||||
sofia_glue_actually_execute_sql(profile, SWITCH_FALSE, sql, profile->ireg_mutex);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user