mod_fifo: Cleanup line spacing
This commit is contained in:
parent
a5f982fd1c
commit
011882c8dd
|
@ -135,8 +135,6 @@ typedef enum {
|
||||||
FIFO_APP_DID_HOOK = (1 << 2)
|
FIFO_APP_DID_HOOK = (1 << 2)
|
||||||
} fifo_app_flag_t;
|
} fifo_app_flag_t;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
static int check_caller_outbound_call(const char *key);
|
static int check_caller_outbound_call(const char *key);
|
||||||
static void add_caller_outbound_call(const char *key, switch_call_cause_t *cancel_cause);
|
static void add_caller_outbound_call(const char *key, switch_call_cause_t *cancel_cause);
|
||||||
static void del_caller_outbound_call(const char *key);
|
static void del_caller_outbound_call(const char *key);
|
||||||
|
@ -146,12 +144,10 @@ static void add_consumer_outbound_call(const char *key, switch_call_cause_t *can
|
||||||
static void del_consumer_outbound_call(const char *key);
|
static void del_consumer_outbound_call(const char *key);
|
||||||
static void cancel_consumer_outbound_call(const char *key, switch_call_cause_t cause);
|
static void cancel_consumer_outbound_call(const char *key, switch_call_cause_t cause);
|
||||||
|
|
||||||
|
|
||||||
static int check_bridge_call(const char *key);
|
static int check_bridge_call(const char *key);
|
||||||
static void add_bridge_call(const char *key);
|
static void add_bridge_call(const char *key);
|
||||||
static void del_bridge_call(const char *key);
|
static void del_bridge_call(const char *key);
|
||||||
|
|
||||||
|
|
||||||
switch_status_t fifo_queue_create(fifo_queue_t **queue, int size, switch_memory_pool_t *pool)
|
switch_status_t fifo_queue_create(fifo_queue_t **queue, int size, switch_memory_pool_t *pool)
|
||||||
{
|
{
|
||||||
fifo_queue_t *q;
|
fifo_queue_t *q;
|
||||||
|
@ -167,7 +163,6 @@ switch_status_t fifo_queue_create(fifo_queue_t **queue, int size, switch_memory_
|
||||||
return SWITCH_STATUS_SUCCESS;
|
return SWITCH_STATUS_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static void change_pos(switch_event_t *event, int pos)
|
static void change_pos(switch_event_t *event, int pos)
|
||||||
{
|
{
|
||||||
const char *uuid = switch_event_get_header(event, "unique-id");
|
const char *uuid = switch_event_get_header(event, "unique-id");
|
||||||
|
@ -289,7 +284,6 @@ static switch_status_t fifo_queue_pop_nameval(fifo_queue_t *queue, const char *n
|
||||||
const char *j_val = switch_event_get_header(queue->data[j], name);
|
const char *j_val = switch_event_get_header(queue->data[j], name);
|
||||||
const char *uuid = switch_event_get_header(queue->data[j], "unique-id");
|
const char *uuid = switch_event_get_header(queue->data[j], "unique-id");
|
||||||
if (j_val && val && !strcmp(j_val, val) && (force || !check_caller_outbound_call(uuid))) {
|
if (j_val && val && !strcmp(j_val, val) && (force || !check_caller_outbound_call(uuid))) {
|
||||||
|
|
||||||
if (remove) {
|
if (remove) {
|
||||||
*pop = queue->data[j];
|
*pop = queue->data[j];
|
||||||
} else {
|
} else {
|
||||||
|
@ -360,11 +354,8 @@ static switch_status_t fifo_queue_popfly(fifo_queue_t *queue, const char *uuid)
|
||||||
switch_mutex_unlock(queue->mutex);
|
switch_mutex_unlock(queue->mutex);
|
||||||
|
|
||||||
return SWITCH_STATUS_SUCCESS;
|
return SWITCH_STATUS_SUCCESS;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* \struct fifo_node
|
* \struct fifo_node
|
||||||
*
|
*
|
||||||
|
@ -412,8 +403,6 @@ typedef struct fifo_node fifo_node_t;
|
||||||
static void fifo_caller_add(fifo_node_t *node, switch_core_session_t *session);
|
static void fifo_caller_add(fifo_node_t *node, switch_core_session_t *session);
|
||||||
static void fifo_caller_del(const char *uuid);
|
static void fifo_caller_del(const char *uuid);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
struct callback {
|
struct callback {
|
||||||
char *buf;
|
char *buf;
|
||||||
size_t len;
|
size_t len;
|
||||||
|
@ -724,13 +713,10 @@ static struct {
|
||||||
outbound_strategy_t default_strategy;
|
outbound_strategy_t default_strategy;
|
||||||
} globals;
|
} globals;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
static int fifo_dec_use_count(const char *outbound_id)
|
static int fifo_dec_use_count(const char *outbound_id)
|
||||||
{
|
{
|
||||||
int r = 0, *count;
|
int r = 0, *count;
|
||||||
|
|
||||||
|
|
||||||
switch_mutex_lock(globals.use_mutex);
|
switch_mutex_lock(globals.use_mutex);
|
||||||
if ((count = (int *) switch_core_hash_find(globals.use_hash, outbound_id))) {
|
if ((count = (int *) switch_core_hash_find(globals.use_hash, outbound_id))) {
|
||||||
if (*count > 0) {
|
if (*count > 0) {
|
||||||
|
@ -755,7 +741,6 @@ static int fifo_get_use_count(const char *outbound_id)
|
||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static int fifo_inc_use_count(const char *outbound_id)
|
static int fifo_inc_use_count(const char *outbound_id)
|
||||||
{
|
{
|
||||||
int r = 0, *count;
|
int r = 0, *count;
|
||||||
|
@ -783,9 +768,6 @@ static void fifo_init_use_count(void)
|
||||||
switch_mutex_unlock(globals.use_mutex);
|
switch_mutex_unlock(globals.use_mutex);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
static int check_caller_outbound_call(const char *key)
|
static int check_caller_outbound_call(const char *key)
|
||||||
{
|
{
|
||||||
int x = 0;
|
int x = 0;
|
||||||
|
@ -796,10 +778,8 @@ static int check_caller_outbound_call(const char *key)
|
||||||
x = !!switch_core_hash_find(globals.caller_orig_hash, key);
|
x = !!switch_core_hash_find(globals.caller_orig_hash, key);
|
||||||
switch_mutex_unlock(globals.caller_orig_mutex);
|
switch_mutex_unlock(globals.caller_orig_mutex);
|
||||||
return x;
|
return x;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static void add_caller_outbound_call(const char *key, switch_call_cause_t *cancel_cause)
|
static void add_caller_outbound_call(const char *key, switch_call_cause_t *cancel_cause)
|
||||||
{
|
{
|
||||||
if (!key) return;
|
if (!key) return;
|
||||||
|
@ -831,8 +811,6 @@ static void cancel_caller_outbound_call(const char *key, switch_call_cause_t cau
|
||||||
switch_mutex_unlock(globals.caller_orig_mutex);
|
switch_mutex_unlock(globals.caller_orig_mutex);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
static int check_bridge_call(const char *key)
|
static int check_bridge_call(const char *key)
|
||||||
{
|
{
|
||||||
int x = 0;
|
int x = 0;
|
||||||
|
@ -843,10 +821,8 @@ static int check_bridge_call(const char *key)
|
||||||
x = !!switch_core_hash_find(globals.bridge_hash, key);
|
x = !!switch_core_hash_find(globals.bridge_hash, key);
|
||||||
switch_mutex_unlock(globals.bridge_mutex);
|
switch_mutex_unlock(globals.bridge_mutex);
|
||||||
return x;
|
return x;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static void add_bridge_call(const char *key)
|
static void add_bridge_call(const char *key)
|
||||||
{
|
{
|
||||||
static int marker = 1;
|
static int marker = 1;
|
||||||
|
@ -864,7 +840,6 @@ static void del_bridge_call(const char *key)
|
||||||
switch_mutex_unlock(globals.bridge_mutex);
|
switch_mutex_unlock(globals.bridge_mutex);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static int check_consumer_outbound_call(const char *key)
|
static int check_consumer_outbound_call(const char *key)
|
||||||
{
|
{
|
||||||
int x = 0;
|
int x = 0;
|
||||||
|
@ -875,7 +850,6 @@ static int check_consumer_outbound_call(const char *key)
|
||||||
x = !!switch_core_hash_find(globals.consumer_orig_hash, key);
|
x = !!switch_core_hash_find(globals.consumer_orig_hash, key);
|
||||||
switch_mutex_unlock(globals.consumer_orig_mutex);
|
switch_mutex_unlock(globals.consumer_orig_mutex);
|
||||||
return x;
|
return x;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void add_consumer_outbound_call(const char *key, switch_call_cause_t *cancel_cause)
|
static void add_consumer_outbound_call(const char *key, switch_call_cause_t *cancel_cause)
|
||||||
|
@ -907,14 +881,10 @@ static void cancel_consumer_outbound_call(const char *key, switch_call_cause_t c
|
||||||
*cancel_cause = cause;
|
*cancel_cause = cause;
|
||||||
}
|
}
|
||||||
switch_mutex_unlock(globals.consumer_orig_mutex);
|
switch_mutex_unlock(globals.consumer_orig_mutex);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
switch_cache_db_handle_t *fifo_get_db_handle(void)
|
switch_cache_db_handle_t *fifo_get_db_handle(void)
|
||||||
{
|
{
|
||||||
|
|
||||||
switch_cache_db_handle_t *dbh = NULL;
|
switch_cache_db_handle_t *dbh = NULL;
|
||||||
char *dsn;
|
char *dsn;
|
||||||
|
|
||||||
|
@ -939,7 +909,6 @@ static switch_status_t fifo_execute_sql_queued(char **sqlp, switch_bool_t sql_al
|
||||||
switch_assert(sqlp && *sqlp);
|
switch_assert(sqlp && *sqlp);
|
||||||
sql = *sqlp;
|
sql = *sqlp;
|
||||||
|
|
||||||
|
|
||||||
if (switch_stristr("insert", sql)) {
|
if (switch_stristr("insert", sql)) {
|
||||||
index = 0;
|
index = 0;
|
||||||
}
|
}
|
||||||
|
@ -955,7 +924,6 @@ static switch_status_t fifo_execute_sql_queued(char **sqlp, switch_bool_t sql_al
|
||||||
}
|
}
|
||||||
|
|
||||||
return SWITCH_STATUS_SUCCESS;
|
return SWITCH_STATUS_SUCCESS;
|
||||||
|
|
||||||
}
|
}
|
||||||
#if 0
|
#if 0
|
||||||
static switch_status_t fifo_execute_sql(char *sql, switch_mutex_t *mutex)
|
static switch_status_t fifo_execute_sql(char *sql, switch_mutex_t *mutex)
|
||||||
|
@ -1101,7 +1069,6 @@ static int node_idle_consumers(fifo_node_t *node)
|
||||||
switch_mutex_unlock(node->mutex);
|
switch_mutex_unlock(node->mutex);
|
||||||
|
|
||||||
return total;
|
return total;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
struct call_helper {
|
struct call_helper {
|
||||||
|
@ -1156,7 +1123,6 @@ static void do_unbridge(switch_core_session_t *consumer_session, switch_core_ses
|
||||||
sql = switch_mprintf("delete from fifo_bridge where consumer_uuid='%q'", switch_core_session_get_uuid(consumer_session));
|
sql = switch_mprintf("delete from fifo_bridge where consumer_uuid='%q'", switch_core_session_get_uuid(consumer_session));
|
||||||
fifo_execute_sql_queued(&sql, SWITCH_TRUE, SWITCH_FALSE);
|
fifo_execute_sql_queued(&sql, SWITCH_TRUE, SWITCH_FALSE);
|
||||||
|
|
||||||
|
|
||||||
switch_channel_set_variable(consumer_channel, "fifo_status", "WAITING");
|
switch_channel_set_variable(consumer_channel, "fifo_status", "WAITING");
|
||||||
switch_channel_set_variable(consumer_channel, "fifo_timestamp", date);
|
switch_channel_set_variable(consumer_channel, "fifo_timestamp", date);
|
||||||
|
|
||||||
|
@ -1208,7 +1174,6 @@ static void do_unbridge(switch_core_session_t *consumer_session, switch_core_ses
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static switch_status_t messagehook (switch_core_session_t *session, switch_core_session_message_t *msg)
|
static switch_status_t messagehook (switch_core_session_t *session, switch_core_session_message_t *msg)
|
||||||
{
|
{
|
||||||
switch_event_t *event;
|
switch_event_t *event;
|
||||||
|
@ -1250,11 +1215,9 @@ static switch_status_t messagehook (switch_core_session_t *session, switch_core_
|
||||||
goto end;
|
goto end;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
switch (msg->message_id) {
|
switch (msg->message_id) {
|
||||||
case SWITCH_MESSAGE_INDICATE_BRIDGE:
|
case SWITCH_MESSAGE_INDICATE_BRIDGE:
|
||||||
{
|
{
|
||||||
|
|
||||||
long epoch_start = 0;
|
long epoch_start = 0;
|
||||||
char date[80] = "";
|
char date[80] = "";
|
||||||
switch_time_t ts;
|
switch_time_t ts;
|
||||||
|
@ -1349,7 +1312,6 @@ static switch_status_t messagehook (switch_core_session_t *session, switch_core_
|
||||||
|
|
||||||
fifo_execute_sql_queued(&sql, SWITCH_TRUE, SWITCH_FALSE);
|
fifo_execute_sql_queued(&sql, SWITCH_TRUE, SWITCH_FALSE);
|
||||||
|
|
||||||
|
|
||||||
epoch_start = (long)switch_epoch_time_now(NULL);
|
epoch_start = (long)switch_epoch_time_now(NULL);
|
||||||
|
|
||||||
ts = switch_micro_time_now();
|
ts = switch_micro_time_now();
|
||||||
|
@ -1391,7 +1353,6 @@ static switch_status_t messagehook (switch_core_session_t *session, switch_core_
|
||||||
return SWITCH_STATUS_SUCCESS;
|
return SWITCH_STATUS_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static void *SWITCH_THREAD_FUNC outbound_ringall_thread_run(switch_thread_t *thread, void *obj)
|
static void *SWITCH_THREAD_FUNC outbound_ringall_thread_run(switch_thread_t *thread, void *obj)
|
||||||
{
|
{
|
||||||
struct callback_helper *cbh = (struct callback_helper *) obj;
|
struct callback_helper *cbh = (struct callback_helper *) obj;
|
||||||
|
@ -1475,7 +1436,6 @@ static void *SWITCH_THREAD_FUNC outbound_ringall_thread_run(switch_thread_t *thr
|
||||||
goto end;
|
goto end;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
if (node) {
|
if (node) {
|
||||||
switch_mutex_lock(node->update_mutex);
|
switch_mutex_lock(node->update_mutex);
|
||||||
node->busy = 0;
|
node->busy = 0;
|
||||||
|
@ -1491,14 +1451,12 @@ static void *SWITCH_THREAD_FUNC outbound_ringall_thread_run(switch_thread_t *thr
|
||||||
switch_event_create(&ovars, SWITCH_EVENT_REQUEST_PARAMS);
|
switch_event_create(&ovars, SWITCH_EVENT_REQUEST_PARAMS);
|
||||||
switch_assert(ovars);
|
switch_assert(ovars);
|
||||||
|
|
||||||
|
|
||||||
for (i = 0; i < cbh->rowcount; i++) {
|
for (i = 0; i < cbh->rowcount; i++) {
|
||||||
struct call_helper *h = cbh->rows[i];
|
struct call_helper *h = cbh->rows[i];
|
||||||
char *parsed = NULL;
|
char *parsed = NULL;
|
||||||
int use_ent = 0;
|
int use_ent = 0;
|
||||||
char *expanded_originate_string = switch_event_expand_headers(ovars, h->originate_string);
|
char *expanded_originate_string = switch_event_expand_headers(ovars, h->originate_string);
|
||||||
|
|
||||||
|
|
||||||
if (strstr(expanded_originate_string, "user/")) {
|
if (strstr(expanded_originate_string, "user/")) {
|
||||||
switch_event_create_brackets(expanded_originate_string, '<', '>', ',', &ovars, &parsed, SWITCH_TRUE);
|
switch_event_create_brackets(expanded_originate_string, '<', '>', ',', &ovars, &parsed, SWITCH_TRUE);
|
||||||
use_ent = 1;
|
use_ent = 1;
|
||||||
|
@ -1526,7 +1484,6 @@ static void *SWITCH_THREAD_FUNC outbound_ringall_thread_run(switch_thread_t *thr
|
||||||
if (expanded_originate_string && expanded_originate_string != h->originate_string) {
|
if (expanded_originate_string && expanded_originate_string != h->originate_string) {
|
||||||
switch_safe_free(expanded_originate_string);
|
switch_safe_free(expanded_originate_string);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
originate_string = (char *) stream.data;
|
originate_string = (char *) stream.data;
|
||||||
|
@ -1589,7 +1546,6 @@ static void *SWITCH_THREAD_FUNC outbound_ringall_thread_run(switch_thread_t *thr
|
||||||
|
|
||||||
switch_event_add_header_string(ovars, SWITCH_STACK_BOTTOM, "fifo_originate_uuid", uuid_str);
|
switch_event_add_header_string(ovars, SWITCH_STACK_BOTTOM, "fifo_originate_uuid", uuid_str);
|
||||||
|
|
||||||
|
|
||||||
if ((export = switch_event_get_header(pop, "variable_fifo_export"))) {
|
if ((export = switch_event_get_header(pop, "variable_fifo_export"))) {
|
||||||
int argc;
|
int argc;
|
||||||
char *argv[100] = { 0 };
|
char *argv[100] = { 0 };
|
||||||
|
@ -1611,7 +1567,6 @@ static void *SWITCH_THREAD_FUNC outbound_ringall_thread_run(switch_thread_t *thr
|
||||||
switch_safe_free(mydata);
|
switch_safe_free(mydata);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
if (switch_event_create_subclass(&event, SWITCH_EVENT_CUSTOM, FIFO_EVENT) == SWITCH_STATUS_SUCCESS) {
|
if (switch_event_create_subclass(&event, SWITCH_EVENT_CUSTOM, FIFO_EVENT) == SWITCH_STATUS_SUCCESS) {
|
||||||
switch_core_session_t *session;
|
switch_core_session_t *session;
|
||||||
if (id && (session = switch_core_session_locate(id))) {
|
if (id && (session = switch_core_session_locate(id))) {
|
||||||
|
@ -1637,7 +1592,6 @@ static void *SWITCH_THREAD_FUNC outbound_ringall_thread_run(switch_thread_t *thr
|
||||||
char *sql = switch_mprintf("update fifo_outbound set ring_count=ring_count+1 where uuid='%s'", h->uuid);
|
char *sql = switch_mprintf("update fifo_outbound set ring_count=ring_count+1 where uuid='%s'", h->uuid);
|
||||||
|
|
||||||
fifo_execute_sql_queued(&sql, SWITCH_TRUE, SWITCH_TRUE);
|
fifo_execute_sql_queued(&sql, SWITCH_TRUE, SWITCH_TRUE);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!total) goto end;
|
if (!total) goto end;
|
||||||
|
@ -1665,7 +1619,6 @@ static void *SWITCH_THREAD_FUNC outbound_ringall_thread_run(switch_thread_t *thr
|
||||||
|
|
||||||
del_caller_outbound_call(id);
|
del_caller_outbound_call(id);
|
||||||
|
|
||||||
|
|
||||||
if (status != SWITCH_STATUS_SUCCESS || cause != SWITCH_CAUSE_SUCCESS) {
|
if (status != SWITCH_STATUS_SUCCESS || cause != SWITCH_CAUSE_SUCCESS) {
|
||||||
const char *acceptable = "false";
|
const char *acceptable = "false";
|
||||||
|
|
||||||
|
@ -1681,7 +1634,6 @@ static void *SWITCH_THREAD_FUNC outbound_ringall_thread_run(switch_thread_t *thr
|
||||||
"where uuid='%q' and ring_count > 0", h->uuid);
|
"where uuid='%q' and ring_count > 0", h->uuid);
|
||||||
fifo_execute_sql_queued(&sql, SWITCH_TRUE, SWITCH_TRUE);
|
fifo_execute_sql_queued(&sql, SWITCH_TRUE, SWITCH_TRUE);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
@ -1694,7 +1646,6 @@ static void *SWITCH_THREAD_FUNC outbound_ringall_thread_run(switch_thread_t *thr
|
||||||
"next_avail=%ld + lag + 1 where uuid='%q' and ring_count > 0",
|
"next_avail=%ld + lag + 1 where uuid='%q' and ring_count > 0",
|
||||||
(long) switch_epoch_time_now(NULL) + node->retry_delay, h->uuid);
|
(long) switch_epoch_time_now(NULL) + node->retry_delay, h->uuid);
|
||||||
fifo_execute_sql_queued(&sql, SWITCH_TRUE, SWITCH_TRUE);
|
fifo_execute_sql_queued(&sql, SWITCH_TRUE, SWITCH_TRUE);
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1730,7 +1681,6 @@ static void *SWITCH_THREAD_FUNC outbound_ringall_thread_run(switch_thread_t *thr
|
||||||
switch_event_fire(&event);
|
switch_event_fire(&event);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
switch_channel_set_variable(channel, "fifo_pop_order", NULL);
|
switch_channel_set_variable(channel, "fifo_pop_order", NULL);
|
||||||
|
|
||||||
app_name = "fifo";
|
app_name = "fifo";
|
||||||
|
@ -1744,9 +1694,6 @@ static void *SWITCH_THREAD_FUNC outbound_ringall_thread_run(switch_thread_t *thr
|
||||||
|
|
||||||
switch_core_session_rwunlock(session);
|
switch_core_session_rwunlock(session);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
for (i = 0; i < cbh->rowcount; i++) {
|
for (i = 0; i < cbh->rowcount; i++) {
|
||||||
struct call_helper *h = cbh->rows[i];
|
struct call_helper *h = cbh->rows[i];
|
||||||
char *sql = switch_mprintf("update fifo_outbound set ring_count=ring_count-1 where uuid='%q' and ring_count > 0", h->uuid);
|
char *sql = switch_mprintf("update fifo_outbound set ring_count=ring_count-1 where uuid='%q' and ring_count > 0", h->uuid);
|
||||||
|
@ -1765,7 +1712,6 @@ static void *SWITCH_THREAD_FUNC outbound_ringall_thread_run(switch_thread_t *thr
|
||||||
switch_thread_rwlock_unlock(node->rwlock);
|
switch_thread_rwlock_unlock(node->rwlock);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
for (i = 0; i < cbh->rowcount; i++) {
|
for (i = 0; i < cbh->rowcount; i++) {
|
||||||
struct call_helper *h = cbh->rows[i];
|
struct call_helper *h = cbh->rows[i];
|
||||||
del_consumer_outbound_call(h->uuid);
|
del_consumer_outbound_call(h->uuid);
|
||||||
|
@ -1817,7 +1763,6 @@ static void *SWITCH_THREAD_FUNC outbound_enterprise_thread_run(switch_thread_t *
|
||||||
globals.threads++;
|
globals.threads++;
|
||||||
switch_mutex_unlock(globals.mutex);
|
switch_mutex_unlock(globals.mutex);
|
||||||
|
|
||||||
|
|
||||||
switch_mutex_lock(globals.mutex);
|
switch_mutex_lock(globals.mutex);
|
||||||
node = switch_core_hash_find(globals.fifo_hash, h->node_name);
|
node = switch_core_hash_find(globals.fifo_hash, h->node_name);
|
||||||
switch_thread_rwlock_rdlock(node->rwlock);
|
switch_thread_rwlock_rdlock(node->rwlock);
|
||||||
|
@ -1849,7 +1794,6 @@ static void *SWITCH_THREAD_FUNC outbound_enterprise_thread_run(switch_thread_t *
|
||||||
"origination_caller_id_name=Queue,origination_caller_id_number='Queue: %q'}%s",
|
"origination_caller_id_name=Queue,origination_caller_id_number='Queue: %q'}%s",
|
||||||
node->name, node->name, node->name, expanded_originate_string);
|
node->name, node->name, node->name, expanded_originate_string);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (switch_event_create_subclass(&event, SWITCH_EVENT_CUSTOM, FIFO_EVENT) == SWITCH_STATUS_SUCCESS) {
|
if (switch_event_create_subclass(&event, SWITCH_EVENT_CUSTOM, FIFO_EVENT) == SWITCH_STATUS_SUCCESS) {
|
||||||
|
@ -1861,14 +1805,12 @@ static void *SWITCH_THREAD_FUNC outbound_enterprise_thread_run(switch_thread_t *
|
||||||
switch_event_fire(&event);
|
switch_event_fire(&event);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
sql = switch_mprintf("update fifo_outbound set ring_count=ring_count+1 where uuid='%s'", h->uuid);
|
sql = switch_mprintf("update fifo_outbound set ring_count=ring_count+1 where uuid='%s'", h->uuid);
|
||||||
fifo_execute_sql_queued(&sql, SWITCH_TRUE, SWITCH_TRUE);
|
fifo_execute_sql_queued(&sql, SWITCH_TRUE, SWITCH_TRUE);
|
||||||
|
|
||||||
status = switch_ivr_originate(NULL, &session, &cause, originate_string, h->timeout, NULL, NULL, NULL, NULL, ovars, SOF_NONE, NULL);
|
status = switch_ivr_originate(NULL, &session, &cause, originate_string, h->timeout, NULL, NULL, NULL, NULL, ovars, SOF_NONE, NULL);
|
||||||
|
|
||||||
if (status != SWITCH_STATUS_SUCCESS) {
|
if (status != SWITCH_STATUS_SUCCESS) {
|
||||||
|
|
||||||
sql = switch_mprintf("update fifo_outbound set ring_count=ring_count-1, "
|
sql = switch_mprintf("update fifo_outbound set ring_count=ring_count-1, "
|
||||||
"outbound_fail_count=outbound_fail_count+1, next_avail=%ld + lag + 1 where uuid='%q'",
|
"outbound_fail_count=outbound_fail_count+1, next_avail=%ld + lag + 1 where uuid='%q'",
|
||||||
(long) switch_epoch_time_now(NULL) + (node ? node->retry_delay : 0), h->uuid);
|
(long) switch_epoch_time_now(NULL) + (node ? node->retry_delay : 0), h->uuid);
|
||||||
|
@ -1901,7 +1843,6 @@ static void *SWITCH_THREAD_FUNC outbound_enterprise_thread_run(switch_thread_t *
|
||||||
switch_event_fire(&event);
|
switch_event_fire(&event);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
if ((member_wait = switch_channel_get_variable(channel, "fifo_member_wait")) || (member_wait = switch_channel_get_variable(channel, "member_wait"))) {
|
if ((member_wait = switch_channel_get_variable(channel, "fifo_member_wait")) || (member_wait = switch_channel_get_variable(channel, "member_wait"))) {
|
||||||
if (strcasecmp(member_wait, "wait") && strcasecmp(member_wait, "nowait")) {
|
if (strcasecmp(member_wait, "wait") && strcasecmp(member_wait, "nowait")) {
|
||||||
member_wait = NULL;
|
member_wait = NULL;
|
||||||
|
@ -1971,12 +1912,10 @@ static int place_call_ringall_callback(void *pArg, int argc, char **argv, char *
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static int place_call_enterprise_callback(void *pArg, int argc, char **argv, char **columnNames)
|
static int place_call_enterprise_callback(void *pArg, int argc, char **argv, char **columnNames)
|
||||||
{
|
{
|
||||||
|
|
||||||
int *need = (int *) pArg;
|
int *need = (int *) pArg;
|
||||||
|
|
||||||
switch_thread_t *thread;
|
switch_thread_t *thread;
|
||||||
|
@ -1992,7 +1931,6 @@ static int place_call_enterprise_callback(void *pArg, int argc, char **argv, cha
|
||||||
h->originate_string = switch_core_strdup(h->pool, argv[2]);
|
h->originate_string = switch_core_strdup(h->pool, argv[2]);
|
||||||
h->timeout = atoi(argv[5]);
|
h->timeout = atoi(argv[5]);
|
||||||
|
|
||||||
|
|
||||||
switch_threadattr_create(&thd_attr, h->pool);
|
switch_threadattr_create(&thd_attr, h->pool);
|
||||||
switch_threadattr_detach_set(thd_attr, 1);
|
switch_threadattr_detach_set(thd_attr, 1);
|
||||||
switch_threadattr_stacksize_set(thd_attr, SWITCH_THREAD_STACKSIZE);
|
switch_threadattr_stacksize_set(thd_attr, SWITCH_THREAD_STACKSIZE);
|
||||||
|
@ -2007,7 +1945,6 @@ static void find_consumers(fifo_node_t *node)
|
||||||
{
|
{
|
||||||
char *sql;
|
char *sql;
|
||||||
|
|
||||||
|
|
||||||
sql = switch_mprintf("select uuid, fifo_name, originate_string, simo_count, use_count, timeout, lag, "
|
sql = switch_mprintf("select uuid, fifo_name, originate_string, simo_count, use_count, timeout, lag, "
|
||||||
"next_avail, expires, static, outbound_call_count, outbound_fail_count, hostname "
|
"next_avail, expires, static, outbound_call_count, outbound_fail_count, hostname "
|
||||||
"from fifo_outbound "
|
"from fifo_outbound "
|
||||||
|
@ -2016,8 +1953,6 @@ static void find_consumers(fifo_node_t *node)
|
||||||
node->name, (long) switch_epoch_time_now(NULL)
|
node->name, (long) switch_epoch_time_now(NULL)
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
switch(node->outbound_strategy) {
|
switch(node->outbound_strategy) {
|
||||||
case NODE_STRATEGY_ENTERPRISE:
|
case NODE_STRATEGY_ENTERPRISE:
|
||||||
{
|
{
|
||||||
|
@ -2028,7 +1963,6 @@ static void find_consumers(fifo_node_t *node)
|
||||||
}
|
}
|
||||||
|
|
||||||
fifo_execute_sql_callback(globals.sql_mutex, sql, place_call_enterprise_callback, &need);
|
fifo_execute_sql_callback(globals.sql_mutex, sql, place_call_enterprise_callback, &need);
|
||||||
|
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case NODE_STRATEGY_RINGALL:
|
case NODE_STRATEGY_RINGALL:
|
||||||
|
@ -2057,14 +1991,12 @@ static void find_consumers(fifo_node_t *node)
|
||||||
} else {
|
} else {
|
||||||
switch_core_destroy_memory_pool(&pool);
|
switch_core_destroy_memory_pool(&pool);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
switch_safe_free(sql);
|
switch_safe_free(sql);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2100,10 +2032,8 @@ static void *SWITCH_THREAD_FUNC node_thread_run(switch_thread_t *thread, void *o
|
||||||
switch_event_destroy(&pop);
|
switch_event_destroy(&pop);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
if (this_node->ready == 0 && switch_thread_rwlock_trywrlock(this_node->rwlock) == SWITCH_STATUS_SUCCESS) {
|
if (this_node->ready == 0 && switch_thread_rwlock_trywrlock(this_node->rwlock) == SWITCH_STATUS_SUCCESS) {
|
||||||
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_NOTICE, "%s removed.\n", this_node->name);
|
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_NOTICE, "%s removed.\n", this_node->name);
|
||||||
|
|
||||||
|
@ -2142,7 +2072,6 @@ static void *SWITCH_THREAD_FUNC node_thread_run(switch_thread_t *thread, void *o
|
||||||
this_node->name, ppl_waiting, consumer_total, idle_consumers, this_node->ring_consumer_count, this_node->outbound_priority);
|
this_node->name, ppl_waiting, consumer_total, idle_consumers, this_node->ring_consumer_count, this_node->outbound_priority);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
if ((ppl_waiting - this_node->ring_consumer_count > 0) && (!consumer_total || !idle_consumers)) {
|
if ((ppl_waiting - this_node->ring_consumer_count > 0) && (!consumer_total || !idle_consumers)) {
|
||||||
found++;
|
found++;
|
||||||
find_consumers(this_node);
|
find_consumers(this_node);
|
||||||
|
@ -2151,7 +2080,6 @@ static void *SWITCH_THREAD_FUNC node_thread_run(switch_thread_t *thread, void *o
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
if (++cur_priority > 10) {
|
if (++cur_priority > 10) {
|
||||||
cur_priority = 1;
|
cur_priority = 1;
|
||||||
}
|
}
|
||||||
|
@ -2202,7 +2130,6 @@ static void check_cancel(fifo_node_t *node)
|
||||||
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Outbound call count (%d) exceeds required value for queue %s (%d), "
|
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Outbound call count (%d) exceeds required value for queue %s (%d), "
|
||||||
"Ending extraneous calls\n", node->ring_consumer_count, node->name, ppl_waiting);
|
"Ending extraneous calls\n", node->ring_consumer_count, node->name, ppl_waiting);
|
||||||
|
|
||||||
|
|
||||||
switch_core_session_hupall_matching_var("fifo_hangup_check", node->name, SWITCH_CAUSE_ORIGINATOR_CANCEL);
|
switch_core_session_hupall_matching_var("fifo_hangup_check", node->name, SWITCH_CAUSE_ORIGINATOR_CANCEL);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -2271,7 +2198,6 @@ static void pres_event_handler(switch_event_t *event)
|
||||||
|
|
||||||
dup_node_name = switch_mprintf("%q@%q", node_name, domain_name);
|
dup_node_name = switch_mprintf("%q@%q", node_name, domain_name);
|
||||||
|
|
||||||
|
|
||||||
switch_mutex_lock(globals.mutex);
|
switch_mutex_lock(globals.mutex);
|
||||||
if (!(node = switch_core_hash_find(globals.fifo_hash, node_name)) && !(node = switch_core_hash_find(globals.fifo_hash, dup_node_name))) {
|
if (!(node = switch_core_hash_find(globals.fifo_hash, node_name)) && !(node = switch_core_hash_find(globals.fifo_hash, dup_node_name))) {
|
||||||
node = create_node(node_name, 0, globals.sql_mutex);
|
node = create_node(node_name, 0, globals.sql_mutex);
|
||||||
|
@ -2322,7 +2248,6 @@ static uint32_t fifo_add_outbound(const char *node_name, const char *url, uint32
|
||||||
switch_thread_rwlock_unlock(node->rwlock);
|
switch_thread_rwlock_unlock(node->rwlock);
|
||||||
|
|
||||||
return i;
|
return i;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
SWITCH_STANDARD_API(fifo_check_bridge_function)
|
SWITCH_STANDARD_API(fifo_check_bridge_function)
|
||||||
|
@ -2357,17 +2282,14 @@ SWITCH_STANDARD_API(fifo_add_outbound_function)
|
||||||
|
|
||||||
stream->write_function(stream, "%d", fifo_add_outbound(argv[0], argv[1], priority));
|
stream->write_function(stream, "%d", fifo_add_outbound(argv[0], argv[1], priority));
|
||||||
|
|
||||||
|
|
||||||
free(data);
|
free(data);
|
||||||
return SWITCH_STATUS_SUCCESS;
|
return SWITCH_STATUS_SUCCESS;
|
||||||
|
|
||||||
|
|
||||||
fail:
|
fail:
|
||||||
|
|
||||||
free(data);
|
free(data);
|
||||||
stream->write_function(stream, "0");
|
stream->write_function(stream, "0");
|
||||||
return SWITCH_STATUS_SUCCESS;
|
return SWITCH_STATUS_SUCCESS;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void dec_use_count(switch_core_session_t *session, const char *type)
|
static void dec_use_count(switch_core_session_t *session, const char *type)
|
||||||
|
@ -2381,7 +2303,6 @@ static void dec_use_count(switch_core_session_t *session, const char *type)
|
||||||
if ((outbound_id = switch_channel_get_variable(channel, "fifo_outbound_uuid"))) {
|
if ((outbound_id = switch_channel_get_variable(channel, "fifo_outbound_uuid"))) {
|
||||||
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "%s untracking call on uuid %s!\n", switch_channel_get_name(channel), outbound_id);
|
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "%s untracking call on uuid %s!\n", switch_channel_get_name(channel), outbound_id);
|
||||||
|
|
||||||
|
|
||||||
sql = switch_mprintf("delete from fifo_bridge where consumer_uuid='%q'", switch_core_session_get_uuid(session));
|
sql = switch_mprintf("delete from fifo_bridge where consumer_uuid='%q'", switch_core_session_get_uuid(session));
|
||||||
fifo_execute_sql_queued(&sql, SWITCH_TRUE, SWITCH_FALSE);
|
fifo_execute_sql_queued(&sql, SWITCH_TRUE, SWITCH_FALSE);
|
||||||
|
|
||||||
|
@ -2468,7 +2389,6 @@ SWITCH_STANDARD_APP(fifo_track_call_function)
|
||||||
|
|
||||||
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "%s tracking call on uuid %s!\n", switch_channel_get_name(channel), data);
|
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "%s tracking call on uuid %s!\n", switch_channel_get_name(channel), data);
|
||||||
|
|
||||||
|
|
||||||
if (switch_channel_direction(channel) == SWITCH_CALL_DIRECTION_OUTBOUND) {
|
if (switch_channel_direction(channel) == SWITCH_CALL_DIRECTION_OUTBOUND) {
|
||||||
col1 = "manual_calls_in_count";
|
col1 = "manual_calls_in_count";
|
||||||
col2 = "manual_calls_in_total_count";
|
col2 = "manual_calls_in_total_count";
|
||||||
|
@ -2503,7 +2423,6 @@ SWITCH_STANDARD_APP(fifo_track_call_function)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static void fifo_caller_add(fifo_node_t *node, switch_core_session_t *session)
|
static void fifo_caller_add(fifo_node_t *node, switch_core_session_t *session)
|
||||||
{
|
{
|
||||||
char *sql;
|
char *sql;
|
||||||
|
@ -2531,11 +2450,8 @@ static void fifo_caller_del(const char *uuid)
|
||||||
}
|
}
|
||||||
|
|
||||||
fifo_execute_sql_queued(&sql, SWITCH_TRUE, SWITCH_TRUE);
|
fifo_execute_sql_queued(&sql, SWITCH_TRUE, SWITCH_TRUE);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
typedef enum {
|
typedef enum {
|
||||||
STRAT_MORE_PPL,
|
STRAT_MORE_PPL,
|
||||||
STRAT_WAITING_LONGER,
|
STRAT_WAITING_LONGER,
|
||||||
|
@ -2621,7 +2537,6 @@ SWITCH_STANDARD_APP(fifo_function)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
if (!(node = switch_core_hash_find(globals.fifo_hash, nlist[i]))) {
|
if (!(node = switch_core_hash_find(globals.fifo_hash, nlist[i]))) {
|
||||||
node = create_node(nlist[i], importance, globals.sql_mutex);
|
node = create_node(nlist[i], importance, globals.sql_mutex);
|
||||||
node->ready = 1;
|
node->ready = 1;
|
||||||
|
@ -2735,7 +2650,6 @@ SWITCH_STANDARD_APP(fifo_function)
|
||||||
switch_event_create(&call_event, SWITCH_EVENT_CHANNEL_DATA);
|
switch_event_create(&call_event, SWITCH_EVENT_CHANNEL_DATA);
|
||||||
switch_channel_event_set_data(channel, call_event);
|
switch_channel_event_set_data(channel, call_event);
|
||||||
|
|
||||||
|
|
||||||
fifo_queue_push(node->fifo_list[p], call_event);
|
fifo_queue_push(node->fifo_list[p], call_event);
|
||||||
fifo_caller_add(node, session);
|
fifo_caller_add(node, session);
|
||||||
in_table = 1;
|
in_table = 1;
|
||||||
|
@ -2811,7 +2725,6 @@ SWITCH_STANDARD_APP(fifo_function)
|
||||||
aborted = 1;
|
aborted = 1;
|
||||||
goto abort;
|
goto abort;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!serviced_uuid && switch_channel_ready(channel)) {
|
if (!serviced_uuid && switch_channel_ready(channel)) {
|
||||||
|
@ -2862,7 +2775,6 @@ SWITCH_STANDARD_APP(fifo_function)
|
||||||
send_presence(node);
|
send_presence(node);
|
||||||
check_cancel(node);
|
check_cancel(node);
|
||||||
switch_mutex_unlock(globals.mutex);
|
switch_mutex_unlock(globals.mutex);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((switch_true(switch_channel_get_variable(channel, "fifo_caller_exit_to_orbit")) || cd.do_orbit) && cd.orbit_exten) {
|
if ((switch_true(switch_channel_get_variable(channel, "fifo_caller_exit_to_orbit")) || cd.do_orbit) && cd.orbit_exten) {
|
||||||
|
@ -2878,7 +2790,6 @@ SWITCH_STANDARD_APP(fifo_function)
|
||||||
cancel_caller_outbound_call(switch_core_session_get_uuid(session), SWITCH_CAUSE_ORIGINATOR_CANCEL);
|
cancel_caller_outbound_call(switch_core_session_get_uuid(session), SWITCH_CAUSE_ORIGINATOR_CANCEL);
|
||||||
|
|
||||||
goto done;
|
goto done;
|
||||||
|
|
||||||
} else { /* consumer */
|
} else { /* consumer */
|
||||||
switch_event_t *pop = NULL;
|
switch_event_t *pop = NULL;
|
||||||
switch_frame_t *read_frame;
|
switch_frame_t *read_frame;
|
||||||
|
@ -3026,7 +2937,6 @@ SWITCH_STANDARD_APP(fifo_function)
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((waiting = node_caller_count(node))) {
|
if ((waiting = node_caller_count(node))) {
|
||||||
|
|
||||||
if (!importance || node->importance > importance) {
|
if (!importance || node->importance > importance) {
|
||||||
if (strat == STRAT_WAITING_LONGER) {
|
if (strat == STRAT_WAITING_LONGER) {
|
||||||
if (node->start_waiting < longest) {
|
if (node->start_waiting < longest) {
|
||||||
|
@ -3164,7 +3074,6 @@ SWITCH_STANDARD_APP(fifo_function)
|
||||||
switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Outbound-URL", url);
|
switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Outbound-URL", url);
|
||||||
switch_event_fire(&event);
|
switch_event_fire(&event);
|
||||||
}
|
}
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
if (switch_event_create_subclass(&event, SWITCH_EVENT_CUSTOM, FIFO_EVENT) == SWITCH_STATUS_SUCCESS) {
|
if (switch_event_create_subclass(&event, SWITCH_EVENT_CUSTOM, FIFO_EVENT) == SWITCH_STATUS_SUCCESS) {
|
||||||
switch_channel_event_set_data(channel, event);
|
switch_channel_event_set_data(channel, event);
|
||||||
|
@ -3177,7 +3086,6 @@ SWITCH_STANDARD_APP(fifo_function)
|
||||||
url = NULL;
|
url = NULL;
|
||||||
caller_uuid = switch_core_session_strdup(session, switch_core_session_get_uuid(other_session));
|
caller_uuid = switch_core_session_strdup(session, switch_core_session_get_uuid(other_session));
|
||||||
}
|
}
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
if ((other_session = switch_core_session_locate(caller_uuid))) {
|
if ((other_session = switch_core_session_locate(caller_uuid))) {
|
||||||
switch_channel_t *other_channel = switch_core_session_get_channel(other_session);
|
switch_channel_t *other_channel = switch_core_session_get_channel(other_session);
|
||||||
|
@ -3218,7 +3126,6 @@ SWITCH_STANDARD_APP(fifo_function)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
switch_channel_set_variable(other_channel, "fifo_serviced_by", my_id);
|
switch_channel_set_variable(other_channel, "fifo_serviced_by", my_id);
|
||||||
switch_channel_set_variable(other_channel, "fifo_serviced_uuid", switch_core_session_get_uuid(session));
|
switch_channel_set_variable(other_channel, "fifo_serviced_uuid", switch_core_session_get_uuid(session));
|
||||||
switch_channel_set_flag(other_channel, CF_BREAK);
|
switch_channel_set_flag(other_channel, CF_BREAK);
|
||||||
|
@ -3236,7 +3143,6 @@ SWITCH_STANDARD_APP(fifo_function)
|
||||||
const char *arg = switch_channel_get_variable(other_channel, "current_application_data");
|
const char *arg = switch_channel_get_variable(other_channel, "current_application_data");
|
||||||
switch_caller_extension_t *extension = NULL;
|
switch_caller_extension_t *extension = NULL;
|
||||||
|
|
||||||
|
|
||||||
switch_channel_set_variable_printf(channel, "last_sent_callee_id_name", "%s (AGENT FAIL)",
|
switch_channel_set_variable_printf(channel, "last_sent_callee_id_name", "%s (AGENT FAIL)",
|
||||||
switch_channel_get_variable(other_channel, "caller_id_name"));
|
switch_channel_get_variable(other_channel, "caller_id_name"));
|
||||||
switch_channel_set_variable(channel, "last_sent_callee_id_number", switch_channel_get_variable(other_channel, "caller_id_number"));
|
switch_channel_set_variable(channel, "last_sent_callee_id_number", switch_channel_get_variable(other_channel, "caller_id_number"));
|
||||||
|
@ -3277,7 +3183,6 @@ SWITCH_STANDARD_APP(fifo_function)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
switch_channel_step_caller_profile(channel);
|
switch_channel_step_caller_profile(channel);
|
||||||
switch_channel_step_caller_profile(other_channel);
|
switch_channel_step_caller_profile(other_channel);
|
||||||
|
|
||||||
|
@ -3287,20 +3192,15 @@ SWITCH_STANDARD_APP(fifo_function)
|
||||||
switch_channel_set_originator_caller_profile(other_channel, switch_caller_profile_clone(other_session, originator_cp));
|
switch_channel_set_originator_caller_profile(other_channel, switch_caller_profile_clone(other_session, originator_cp));
|
||||||
switch_channel_set_originatee_caller_profile(channel, switch_caller_profile_clone(session, originatee_cp));
|
switch_channel_set_originatee_caller_profile(channel, switch_caller_profile_clone(session, originatee_cp));
|
||||||
|
|
||||||
|
|
||||||
originator_cp->callee_id_name = switch_core_strdup(originator_cp->pool, originatee_cp->callee_id_name);
|
originator_cp->callee_id_name = switch_core_strdup(originator_cp->pool, originatee_cp->callee_id_name);
|
||||||
originator_cp->callee_id_number = switch_core_strdup(originator_cp->pool, originatee_cp->callee_id_number);
|
originator_cp->callee_id_number = switch_core_strdup(originator_cp->pool, originatee_cp->callee_id_number);
|
||||||
|
|
||||||
|
|
||||||
originatee_cp->callee_id_name = switch_core_strdup(originatee_cp->pool, originatee_cp->caller_id_name);
|
originatee_cp->callee_id_name = switch_core_strdup(originatee_cp->pool, originatee_cp->caller_id_name);
|
||||||
originatee_cp->callee_id_number = switch_core_strdup(originatee_cp->pool, originatee_cp->caller_id_number);
|
originatee_cp->callee_id_number = switch_core_strdup(originatee_cp->pool, originatee_cp->caller_id_number);
|
||||||
|
|
||||||
originatee_cp->caller_id_name = switch_core_strdup(originatee_cp->pool, originator_cp->caller_id_name);
|
originatee_cp->caller_id_name = switch_core_strdup(originatee_cp->pool, originator_cp->caller_id_name);
|
||||||
originatee_cp->caller_id_number = switch_core_strdup(originatee_cp->pool, originator_cp->caller_id_number);
|
originatee_cp->caller_id_number = switch_core_strdup(originatee_cp->pool, originator_cp->caller_id_number);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
ts = switch_micro_time_now();
|
ts = switch_micro_time_now();
|
||||||
switch_time_exp_lt(&tm, ts);
|
switch_time_exp_lt(&tm, ts);
|
||||||
epoch_start = (long)switch_epoch_time_now(NULL);
|
epoch_start = (long)switch_epoch_time_now(NULL);
|
||||||
|
@ -3330,7 +3230,6 @@ SWITCH_STANDARD_APP(fifo_function)
|
||||||
switch_process_import(session, other_channel, "fifo_caller_consumer_import", switch_channel_get_variable(channel, "fifo_import_prefix"));
|
switch_process_import(session, other_channel, "fifo_caller_consumer_import", switch_channel_get_variable(channel, "fifo_import_prefix"));
|
||||||
switch_process_import(other_session, channel, "fifo_consumer_caller_import", switch_channel_get_variable(other_channel, "fifo_import_prefix"));
|
switch_process_import(other_session, channel, "fifo_consumer_caller_import", switch_channel_get_variable(other_channel, "fifo_import_prefix"));
|
||||||
|
|
||||||
|
|
||||||
if (outbound_id) {
|
if (outbound_id) {
|
||||||
cancel_consumer_outbound_call(outbound_id, SWITCH_CAUSE_ORIGINATOR_CANCEL);
|
cancel_consumer_outbound_call(outbound_id, SWITCH_CAUSE_ORIGINATOR_CANCEL);
|
||||||
add_bridge_call(outbound_id);
|
add_bridge_call(outbound_id);
|
||||||
|
@ -3338,10 +3237,8 @@ SWITCH_STANDARD_APP(fifo_function)
|
||||||
sql = switch_mprintf("update fifo_outbound set stop_time=0,start_time=%ld,use_count=use_count+1,outbound_fail_count=0 where uuid='%s'",
|
sql = switch_mprintf("update fifo_outbound set stop_time=0,start_time=%ld,use_count=use_count+1,outbound_fail_count=0 where uuid='%s'",
|
||||||
switch_epoch_time_now(NULL), outbound_id);
|
switch_epoch_time_now(NULL), outbound_id);
|
||||||
|
|
||||||
|
|
||||||
fifo_execute_sql_queued(&sql, SWITCH_TRUE, SWITCH_TRUE);
|
fifo_execute_sql_queued(&sql, SWITCH_TRUE, SWITCH_TRUE);
|
||||||
fifo_inc_use_count(outbound_id);
|
fifo_inc_use_count(outbound_id);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (switch_event_create_subclass(&event, SWITCH_EVENT_CUSTOM, FIFO_EVENT) == SWITCH_STATUS_SUCCESS) {
|
if (switch_event_create_subclass(&event, SWITCH_EVENT_CUSTOM, FIFO_EVENT) == SWITCH_STATUS_SUCCESS) {
|
||||||
|
@ -3358,8 +3255,6 @@ SWITCH_STANDARD_APP(fifo_function)
|
||||||
switch_event_fire(&event);
|
switch_event_fire(&event);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
if (switch_event_create_subclass(&event, SWITCH_EVENT_CUSTOM, FIFO_EVENT) == SWITCH_STATUS_SUCCESS) {
|
if (switch_event_create_subclass(&event, SWITCH_EVENT_CUSTOM, FIFO_EVENT) == SWITCH_STATUS_SUCCESS) {
|
||||||
switch_channel_event_set_data(channel, event);
|
switch_channel_event_set_data(channel, event);
|
||||||
switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "FIFO-Name", argv[0]);
|
switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "FIFO-Name", argv[0]);
|
||||||
|
@ -3378,7 +3273,6 @@ SWITCH_STANDARD_APP(fifo_function)
|
||||||
switch_event_fire(&event);
|
switch_event_fire(&event);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
add_bridge_call(switch_core_session_get_uuid(other_session));
|
add_bridge_call(switch_core_session_get_uuid(other_session));
|
||||||
add_bridge_call(switch_core_session_get_uuid(session));
|
add_bridge_call(switch_core_session_get_uuid(session));
|
||||||
|
|
||||||
|
@ -3394,10 +3288,8 @@ SWITCH_STANDARD_APP(fifo_function)
|
||||||
(long) switch_epoch_time_now(NULL)
|
(long) switch_epoch_time_now(NULL)
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
||||||
fifo_execute_sql_queued(&sql, SWITCH_TRUE, SWITCH_FALSE);
|
fifo_execute_sql_queued(&sql, SWITCH_TRUE, SWITCH_FALSE);
|
||||||
|
|
||||||
|
|
||||||
switch_channel_set_variable(channel, SWITCH_SIGNAL_BOND_VARIABLE, switch_core_session_get_uuid(other_session));
|
switch_channel_set_variable(channel, SWITCH_SIGNAL_BOND_VARIABLE, switch_core_session_get_uuid(other_session));
|
||||||
switch_channel_set_variable(other_channel, SWITCH_SIGNAL_BOND_VARIABLE, switch_core_session_get_uuid(session));
|
switch_channel_set_variable(other_channel, SWITCH_SIGNAL_BOND_VARIABLE, switch_core_session_get_uuid(session));
|
||||||
|
|
||||||
|
@ -3430,10 +3322,8 @@ SWITCH_STANDARD_APP(fifo_function)
|
||||||
|
|
||||||
del_bridge_call(outbound_id);
|
del_bridge_call(outbound_id);
|
||||||
fifo_dec_use_count(outbound_id);
|
fifo_dec_use_count(outbound_id);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
if (switch_event_create_subclass(&event, SWITCH_EVENT_CUSTOM, FIFO_EVENT) == SWITCH_STATUS_SUCCESS) {
|
if (switch_event_create_subclass(&event, SWITCH_EVENT_CUSTOM, FIFO_EVENT) == SWITCH_STATUS_SUCCESS) {
|
||||||
uint64_t hold_usec = 0, tt_usec = 0;
|
uint64_t hold_usec = 0, tt_usec = 0;
|
||||||
switch_channel_event_set_data(channel, event);
|
switch_channel_event_set_data(channel, event);
|
||||||
|
@ -3462,7 +3352,6 @@ SWITCH_STANDARD_APP(fifo_function)
|
||||||
del_bridge_call(switch_core_session_get_uuid(session));
|
del_bridge_call(switch_core_session_get_uuid(session));
|
||||||
del_bridge_call(switch_core_session_get_uuid(other_session));
|
del_bridge_call(switch_core_session_get_uuid(other_session));
|
||||||
|
|
||||||
|
|
||||||
if (switch_event_create_subclass(&event, SWITCH_EVENT_CUSTOM, FIFO_EVENT) == SWITCH_STATUS_SUCCESS) {
|
if (switch_event_create_subclass(&event, SWITCH_EVENT_CUSTOM, FIFO_EVENT) == SWITCH_STATUS_SUCCESS) {
|
||||||
switch_channel_event_set_data(channel, event);
|
switch_channel_event_set_data(channel, event);
|
||||||
switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "FIFO-Name", argv[0]);
|
switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "FIFO-Name", argv[0]);
|
||||||
|
@ -3500,7 +3389,6 @@ SWITCH_STANDARD_APP(fifo_function)
|
||||||
sql = switch_mprintf("delete from fifo_bridge where consumer_uuid='%q'", switch_core_session_get_uuid(session));
|
sql = switch_mprintf("delete from fifo_bridge where consumer_uuid='%q'", switch_core_session_get_uuid(session));
|
||||||
fifo_execute_sql_queued(&sql, SWITCH_TRUE, SWITCH_FALSE);
|
fifo_execute_sql_queued(&sql, SWITCH_TRUE, SWITCH_FALSE);
|
||||||
|
|
||||||
|
|
||||||
if (switch_channel_ready(channel)) {
|
if (switch_channel_ready(channel)) {
|
||||||
switch_core_media_bug_pause(session);
|
switch_core_media_bug_pause(session);
|
||||||
}
|
}
|
||||||
|
@ -3526,7 +3414,6 @@ SWITCH_STANDARD_APP(fifo_function)
|
||||||
|
|
||||||
switch_core_session_rwunlock(other_session);
|
switch_core_session_rwunlock(other_session);
|
||||||
|
|
||||||
|
|
||||||
if (!do_wait || !switch_channel_ready(channel)) {
|
if (!do_wait || !switch_channel_ready(channel)) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -3584,7 +3471,6 @@ SWITCH_STANDARD_APP(fifo_function)
|
||||||
if ((terminator == *fifo_consumer_wrapup_key) || !(switch_channel_ready(channel))) {
|
if ((terminator == *fifo_consumer_wrapup_key) || !(switch_channel_ready(channel))) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
} else if (fifo_consumer_wrapup_time && (zstr(fifo_consumer_wrapup_key) || !strcmp(buf, fifo_consumer_wrapup_key))) {
|
} else if (fifo_consumer_wrapup_time && (zstr(fifo_consumer_wrapup_key) || !strcmp(buf, fifo_consumer_wrapup_key))) {
|
||||||
while (switch_channel_ready(channel)) {
|
while (switch_channel_ready(channel)) {
|
||||||
|
@ -3631,7 +3517,6 @@ SWITCH_STANDARD_APP(fifo_function)
|
||||||
switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG, "%s is still alive, tracking call.\n", switch_channel_get_name(channel));
|
switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG, "%s is still alive, tracking call.\n", switch_channel_get_name(channel));
|
||||||
fifo_track_call_function(session, outbound_id);
|
fifo_track_call_function(session, outbound_id);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
done:
|
done:
|
||||||
|
@ -3704,14 +3589,12 @@ static int xml_callback(void *pArg, int argc, char **argv, char **columnNames)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
if (atoi(argv[13])) {
|
if (atoi(argv[13])) {
|
||||||
arg = 17;
|
arg = 17;
|
||||||
} else {
|
} else {
|
||||||
arg = 18;
|
arg = 18;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
if ((etime = atol(argv[arg]))) {
|
if ((etime = atol(argv[arg]))) {
|
||||||
switch_size_t retsize;
|
switch_size_t retsize;
|
||||||
switch_time_exp_lt(&tm, switch_time_from_sec(etime));
|
switch_time_exp_lt(&tm, switch_time_from_sec(etime));
|
||||||
|
@ -3720,7 +3603,6 @@ static int xml_callback(void *pArg, int argc, char **argv, char **columnNames)
|
||||||
switch_set_string(atime, "now");
|
switch_set_string(atime, "now");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
x_out = switch_xml_add_child_d(h->xml, h->tag, c_off++);
|
x_out = switch_xml_add_child_d(h->xml, h->tag, c_off++);
|
||||||
switch_xml_set_attr_d(x_out, "simo", argv[3]);
|
switch_xml_set_attr_d(x_out, "simo", argv[3]);
|
||||||
switch_xml_set_attr_d(x_out, "use_count", argv[4]);
|
switch_xml_set_attr_d(x_out, "use_count", argv[4]);
|
||||||
|
@ -3769,7 +3651,6 @@ static int xml_callback(void *pArg, int argc, char **argv, char **columnNames)
|
||||||
switch_xml_set_attr_d(x_out, "stop-time", tb);
|
switch_xml_set_attr_d(x_out, "stop-time", tb);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
switch_xml_set_attr_d(x_out, "next-available", expires);
|
switch_xml_set_attr_d(x_out, "next-available", expires);
|
||||||
|
|
||||||
switch_xml_set_txt_d(x_out, argv[2]);
|
switch_xml_set_txt_d(x_out, argv[2]);
|
||||||
|
@ -3783,7 +3664,6 @@ static int xml_outbound(switch_xml_t xml, fifo_node_t *node, char *container, ch
|
||||||
char *sql;
|
char *sql;
|
||||||
|
|
||||||
if (!strcmp(node->name, MANUAL_QUEUE_NAME)) {
|
if (!strcmp(node->name, MANUAL_QUEUE_NAME)) {
|
||||||
|
|
||||||
sql = switch_mprintf("select uuid, '%s', originate_string, simo_count, use_count, timeout,"
|
sql = switch_mprintf("select uuid, '%s', originate_string, simo_count, use_count, timeout,"
|
||||||
"lag, next_avail, expires, static, outbound_call_count, outbound_fail_count,"
|
"lag, next_avail, expires, static, outbound_call_count, outbound_fail_count,"
|
||||||
"hostname, taking_calls, status, outbound_call_total_count, outbound_fail_total_count, active_time, inactive_time,"
|
"hostname, taking_calls, status, outbound_call_total_count, outbound_fail_total_count, active_time, inactive_time,"
|
||||||
|
@ -3794,8 +3674,6 @@ static int xml_outbound(switch_xml_t xml, fifo_node_t *node, char *container, ch
|
||||||
"hostname, taking_calls, status, outbound_call_total_count, outbound_fail_total_count, active_time, inactive_time,"
|
"hostname, taking_calls, status, outbound_call_total_count, outbound_fail_total_count, active_time, inactive_time,"
|
||||||
"manual_calls_out_count, manual_calls_in_count, manual_calls_out_total_count, manual_calls_in_total_count",
|
"manual_calls_out_count, manual_calls_in_count, manual_calls_out_total_count, manual_calls_in_total_count",
|
||||||
MANUAL_QUEUE_NAME);
|
MANUAL_QUEUE_NAME);
|
||||||
|
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
sql = switch_mprintf("select uuid, fifo_name, originate_string, simo_count, use_count, timeout, "
|
sql = switch_mprintf("select uuid, fifo_name, originate_string, simo_count, use_count, timeout, "
|
||||||
"lag, next_avail, expires, static, outbound_call_count, outbound_fail_count, "
|
"lag, next_avail, expires, static, outbound_call_count, outbound_fail_count, "
|
||||||
|
@ -3822,7 +3700,6 @@ static int xml_outbound(switch_xml_t xml, fifo_node_t *node, char *container, ch
|
||||||
return h.cc_off;
|
return h.cc_off;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static int xml_bridge_callback(void *pArg, int argc, char **argv, char **columnNames)
|
static int xml_bridge_callback(void *pArg, int argc, char **argv, char **columnNames)
|
||||||
{
|
{
|
||||||
struct xml_helper *h = (struct xml_helper *) pArg;
|
struct xml_helper *h = (struct xml_helper *) pArg;
|
||||||
|
@ -3844,7 +3721,6 @@ static int xml_bridge_callback(void *pArg, int argc, char **argv, char **columnN
|
||||||
switch_set_string(exp_buf, "now");
|
switch_set_string(exp_buf, "now");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
x_bridge = switch_xml_add_child_d(h->xml, h->tag, h->row_off++);
|
x_bridge = switch_xml_add_child_d(h->xml, h->tag, h->row_off++);
|
||||||
|
|
||||||
switch_xml_set_attr_d(x_bridge, "fifo_name", argv[0]);
|
switch_xml_set_attr_d(x_bridge, "fifo_name", argv[0]);
|
||||||
|
@ -3861,8 +3737,6 @@ static int xml_bridge_callback(void *pArg, int argc, char **argv, char **columnN
|
||||||
encoded = switch_url_encode(argv[3], url_buf, sizeof(url_buf));
|
encoded = switch_url_encode(argv[3], url_buf, sizeof(url_buf));
|
||||||
switch_xml_set_attr_d(x_caller, "caller_id_number", encoded);
|
switch_xml_set_attr_d(x_caller, "caller_id_number", encoded);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
if (h->verbose) {
|
if (h->verbose) {
|
||||||
if ((session = switch_core_session_locate(argv[1]))) {
|
if ((session = switch_core_session_locate(argv[1]))) {
|
||||||
x_cdr = switch_xml_add_child_d(x_caller, "cdr", 0);
|
x_cdr = switch_xml_add_child_d(x_caller, "cdr", 0);
|
||||||
|
@ -3976,7 +3850,6 @@ static int xml_hash(switch_xml_t xml, switch_hash_t *hash, char *container, char
|
||||||
return cc_off;
|
return cc_off;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static int xml_caller(switch_xml_t xml, fifo_node_t *node, char *container, char *tag, int cc_off, int verbose)
|
static int xml_caller(switch_xml_t xml, fifo_node_t *node, char *container, char *tag, int cc_off, int verbose)
|
||||||
{
|
{
|
||||||
switch_xml_t x_tmp, x_caller, x_cp;
|
switch_xml_t x_tmp, x_caller, x_cp;
|
||||||
|
@ -3993,7 +3866,6 @@ static int xml_caller(switch_xml_t xml, fifo_node_t *node, char *container, char
|
||||||
switch_mutex_lock(q->mutex);
|
switch_mutex_lock(q->mutex);
|
||||||
|
|
||||||
for (i = 0; i < q->idx; i++) {
|
for (i = 0; i < q->idx; i++) {
|
||||||
|
|
||||||
int c_off = 0, d_off = 0;
|
int c_off = 0, d_off = 0;
|
||||||
const char *status;
|
const char *status;
|
||||||
const char *ts;
|
const char *ts;
|
||||||
|
@ -4045,7 +3917,6 @@ static int xml_caller(switch_xml_t xml, fifo_node_t *node, char *container, char
|
||||||
switch_snprintf(sl, sizeof(sl), "%d", x);
|
switch_snprintf(sl, sizeof(sl), "%d", x);
|
||||||
switch_xml_set_attr_d_buf(x_caller, "slot", sl);
|
switch_xml_set_attr_d_buf(x_caller, "slot", sl);
|
||||||
|
|
||||||
|
|
||||||
if (verbose) {
|
if (verbose) {
|
||||||
if (!(x_cp = switch_xml_add_child_d(x_caller, "cdr", d_off++))) {
|
if (!(x_cp = switch_xml_add_child_d(x_caller, "cdr", d_off++))) {
|
||||||
abort();
|
abort();
|
||||||
|
@ -4104,7 +3975,6 @@ static void list_node(fifo_node_t *node, switch_xml_t x_report, int *off, int ve
|
||||||
cc_off = xml_bridges(x_fifo, node, "bridges", "bridge", cc_off, verbose);
|
cc_off = xml_bridges(x_fifo, node, "bridges", "bridge", cc_off, verbose);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void dump_hash(switch_hash_t *hash, switch_stream_handle_t *stream)
|
void dump_hash(switch_hash_t *hash, switch_stream_handle_t *stream)
|
||||||
{
|
{
|
||||||
switch_hash_index_t *hi;
|
switch_hash_index_t *hi;
|
||||||
|
@ -4121,8 +3991,6 @@ void dump_hash(switch_hash_t *hash, switch_stream_handle_t *stream)
|
||||||
|
|
||||||
void node_dump(switch_stream_handle_t *stream)
|
void node_dump(switch_stream_handle_t *stream)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
|
||||||
switch_hash_index_t *hi;
|
switch_hash_index_t *hi;
|
||||||
fifo_node_t *node;
|
fifo_node_t *node;
|
||||||
void *val;
|
void *val;
|
||||||
|
@ -4161,12 +4029,8 @@ void node_dump(switch_stream_handle_t *stream)
|
||||||
dump_hash(globals.bridge_hash, stream);
|
dump_hash(globals.bridge_hash, stream);
|
||||||
|
|
||||||
switch_mutex_unlock(globals.mutex);
|
switch_mutex_unlock(globals.mutex);
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#define FIFO_API_SYNTAX "list|list_verbose|count|debug|status|importance [<fifo name>]|reparse [del_all]"
|
#define FIFO_API_SYNTAX "list|list_verbose|count|debug|status|importance [<fifo name>]|reparse [del_all]"
|
||||||
SWITCH_STANDARD_API(fifo_api_function)
|
SWITCH_STANDARD_API(fifo_api_function)
|
||||||
{
|
{
|
||||||
|
@ -4188,7 +4052,6 @@ SWITCH_STANDARD_API(fifo_api_function)
|
||||||
switch_assert(data);
|
switch_assert(data);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
switch_mutex_lock(globals.mutex);
|
switch_mutex_lock(globals.mutex);
|
||||||
|
|
||||||
if (zstr(cmd) || (argc = switch_separate_string(data, ' ', argv, (sizeof(argv) / sizeof(argv[0])))) < 1 || !argv[0]) {
|
if (zstr(cmd) || (argc = switch_separate_string(data, ' ', argv, (sizeof(argv) / sizeof(argv[0])))) < 1 || !argv[0]) {
|
||||||
|
@ -4245,7 +4108,6 @@ SWITCH_STANDARD_API(fifo_api_function)
|
||||||
stream->write_function(stream, "%s\n", xml_text);
|
stream->write_function(stream, "%s\n", xml_text);
|
||||||
switch_xml_free(x_report);
|
switch_xml_free(x_report);
|
||||||
switch_safe_free(xml_text);
|
switch_safe_free(xml_text);
|
||||||
|
|
||||||
} else if (!strcasecmp(argv[0], "importance")) {
|
} else if (!strcasecmp(argv[0], "importance")) {
|
||||||
if (argv[1] && (node = switch_core_hash_find(globals.fifo_hash, argv[1]))) {
|
if (argv[1] && (node = switch_core_hash_find(globals.fifo_hash, argv[1]))) {
|
||||||
int importance = 0;
|
int importance = 0;
|
||||||
|
@ -4314,7 +4176,6 @@ SWITCH_STANDARD_API(fifo_api_function)
|
||||||
return SWITCH_STATUS_SUCCESS;
|
return SWITCH_STATUS_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
const char outbound_sql[] =
|
const char outbound_sql[] =
|
||||||
"create table fifo_outbound (\n"
|
"create table fifo_outbound (\n"
|
||||||
" uuid varchar(255),\n"
|
" uuid varchar(255),\n"
|
||||||
|
@ -4345,7 +4206,6 @@ const char outbound_sql[] =
|
||||||
" stop_time integer not null default 0\n"
|
" stop_time integer not null default 0\n"
|
||||||
");\n";
|
");\n";
|
||||||
|
|
||||||
|
|
||||||
const char bridge_sql[] =
|
const char bridge_sql[] =
|
||||||
"create table fifo_bridge (\n"
|
"create table fifo_bridge (\n"
|
||||||
" fifo_name varchar(1024) not null,\n"
|
" fifo_name varchar(1024) not null,\n"
|
||||||
|
@ -4369,8 +4229,6 @@ const char callers_sql[] =
|
||||||
");\n"
|
");\n"
|
||||||
;
|
;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
static void extract_fifo_outbound_uuid(char *string, char *uuid, switch_size_t len)
|
static void extract_fifo_outbound_uuid(char *string, char *uuid, switch_size_t len)
|
||||||
{
|
{
|
||||||
switch_event_t *ovars;
|
switch_event_t *ovars;
|
||||||
|
@ -4378,7 +4236,6 @@ static void extract_fifo_outbound_uuid(char *string, char *uuid, switch_size_t l
|
||||||
const char *fifo_outbound_uuid;
|
const char *fifo_outbound_uuid;
|
||||||
|
|
||||||
switch_event_create(&ovars, SWITCH_EVENT_REQUEST_PARAMS);
|
switch_event_create(&ovars, SWITCH_EVENT_REQUEST_PARAMS);
|
||||||
|
|
||||||
switch_event_create_brackets(string, '{', '}', ',', &ovars, &parsed, SWITCH_TRUE);
|
switch_event_create_brackets(string, '{', '}', ',', &ovars, &parsed, SWITCH_TRUE);
|
||||||
|
|
||||||
if ((fifo_outbound_uuid = switch_event_get_header(ovars, "fifo_outbound_uuid"))) {
|
if ((fifo_outbound_uuid = switch_event_get_header(ovars, "fifo_outbound_uuid"))) {
|
||||||
|
@ -4665,7 +4522,6 @@ static switch_status_t load_config(int reload, int del_all)
|
||||||
return status;
|
return status;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static void fifo_member_add(char *fifo_name, char *originate_string, int simo_count, int timeout, int lag, time_t expires, int taking_calls)
|
static void fifo_member_add(char *fifo_name, char *originate_string, int simo_count, int timeout, int lag, time_t expires, int taking_calls)
|
||||||
{
|
{
|
||||||
char digest[SWITCH_MD5_DIGEST_STRING_SIZE] = { 0 };
|
char digest[SWITCH_MD5_DIGEST_STRING_SIZE] = { 0 };
|
||||||
|
@ -4686,7 +4542,6 @@ static void fifo_member_add(char *fifo_name, char *originate_string, int simo_co
|
||||||
switch_assert(sql);
|
switch_assert(sql);
|
||||||
fifo_execute_sql_queued(&sql, SWITCH_TRUE, SWITCH_TRUE);
|
fifo_execute_sql_queued(&sql, SWITCH_TRUE, SWITCH_TRUE);
|
||||||
|
|
||||||
|
|
||||||
switch_mutex_lock(globals.mutex);
|
switch_mutex_lock(globals.mutex);
|
||||||
if (!(node = switch_core_hash_find(globals.fifo_hash, fifo_name))) {
|
if (!(node = switch_core_hash_find(globals.fifo_hash, fifo_name))) {
|
||||||
node = create_node(fifo_name, 0, globals.sql_mutex);
|
node = create_node(fifo_name, 0, globals.sql_mutex);
|
||||||
|
@ -4732,7 +4587,6 @@ static void fifo_member_del(char *fifo_name, char *originate_string)
|
||||||
|
|
||||||
if (!fifo_name) return;
|
if (!fifo_name) return;
|
||||||
|
|
||||||
|
|
||||||
if (switch_stristr("fifo_outbound_uuid=", originate_string)) {
|
if (switch_stristr("fifo_outbound_uuid=", originate_string)) {
|
||||||
extract_fifo_outbound_uuid(originate_string, digest, sizeof(digest));
|
extract_fifo_outbound_uuid(originate_string, digest, sizeof(digest));
|
||||||
} else {
|
} else {
|
||||||
|
@ -4844,7 +4698,6 @@ SWITCH_STANDARD_API(fifo_member_api_function)
|
||||||
free(mydata);
|
free(mydata);
|
||||||
|
|
||||||
return SWITCH_STATUS_SUCCESS;
|
return SWITCH_STATUS_SUCCESS;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
SWITCH_MODULE_LOAD_FUNCTION(mod_fifo_load)
|
SWITCH_MODULE_LOAD_FUNCTION(mod_fifo_load)
|
||||||
|
@ -4890,7 +4743,6 @@ SWITCH_MODULE_LOAD_FUNCTION(mod_fifo_load)
|
||||||
return status;
|
return status;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* connect my internal structure to the blank pointer passed to me */
|
/* connect my internal structure to the blank pointer passed to me */
|
||||||
*module_interface = switch_loadable_module_create_module_interface(pool, modname);
|
*module_interface = switch_loadable_module_create_module_interface(pool, modname);
|
||||||
SWITCH_ADD_APP(app_interface, "fifo", "Park with FIFO", FIFO_DESC, fifo_function, FIFO_USAGE, SAF_NONE);
|
SWITCH_ADD_APP(app_interface, "fifo", "Park with FIFO", FIFO_DESC, fifo_function, FIFO_USAGE, SAF_NONE);
|
||||||
|
@ -4946,7 +4798,6 @@ SWITCH_MODULE_SHUTDOWN_FUNCTION(mod_fifo_shutdown)
|
||||||
this_node = node;
|
this_node = node;
|
||||||
node = node->next;
|
node = node->next;
|
||||||
|
|
||||||
|
|
||||||
switch_mutex_lock(this_node->update_mutex);
|
switch_mutex_lock(this_node->update_mutex);
|
||||||
switch_mutex_lock(this_node->mutex);
|
switch_mutex_lock(this_node->mutex);
|
||||||
for (x = 0; x < MAX_PRI; x++) {
|
for (x = 0; x < MAX_PRI; x++) {
|
||||||
|
|
Loading…
Reference in New Issue