[Freeswitch-svn] [commit] r13842 - freeswitch/trunk/src
FreeSWITCH SVN
anthm at freeswitch.org
Thu Jun 18 09:35:41 PDT 2009
Author: anthm
Date: Thu Jun 18 11:35:41 2009
New Revision: 13842
Log:
add local_var_clobber variable for {} to set if [] vars should clobber {} vars (default false)
Modified:
freeswitch/trunk/src/switch_ivr_originate.c
Modified: freeswitch/trunk/src/switch_ivr_originate.c
==============================================================================
--- freeswitch/trunk/src/switch_ivr_originate.c (original)
+++ freeswitch/trunk/src/switch_ivr_originate.c Thu Jun 18 11:35:41 2009
@@ -916,10 +916,11 @@
char *fail_on_single_reject_var = NULL;
char *loop_data = NULL;
uint32_t progress_timelimit_sec = 0;
- const char *cid_tmp;
+ const char *cid_tmp, *lc;
originate_global_t oglobals = { 0 };
int cdr_total = 0;
-
+ int local_clobber = 0;
+
oglobals.idx = IDX_NADA;
oglobals.early_ok = 1;
oglobals.session = session;
@@ -1511,6 +1512,25 @@
originate_status[i].peer_channel = switch_core_session_get_channel(new_session);
switch_channel_set_flag(originate_status[i].peer_channel, CF_ORIGINATING);
+ if ((lc = switch_event_get_header(var_event, "local_var_clobber"))) {
+ local_clobber = switch_true(lc);
+ }
+
+ if (!local_clobber) {
+ if (var_event) {
+ switch_event_t *event;
+ switch_event_header_t *header;
+ /* install the vars from the {} params */
+ for (header = var_event->headers; header; header = header->next) {
+ switch_channel_set_variable(originate_status[i].peer_channel, header->name, header->value);
+ }
+ switch_event_create(&event, SWITCH_EVENT_CHANNEL_ORIGINATE);
+ switch_assert(event);
+ switch_channel_event_set_data(originate_status[i].peer_channel, event);
+ switch_event_fire(&event);
+ }
+ }
+
if (vdata) {
char *var_array[1024] = { 0 };
int var_count = 0;
@@ -1529,17 +1549,19 @@
}
}
- if (var_event) {
- switch_event_t *event;
- switch_event_header_t *header;
- /* install the vars from the {} params */
- for (header = var_event->headers; header; header = header->next) {
- switch_channel_set_variable(originate_status[i].peer_channel, header->name, header->value);
- }
- switch_event_create(&event, SWITCH_EVENT_CHANNEL_ORIGINATE);
- switch_assert(event);
- switch_channel_event_set_data(originate_status[i].peer_channel, event);
- switch_event_fire(&event);
+ if (local_clobber) {
+ if (var_event) {
+ switch_event_t *event;
+ switch_event_header_t *header;
+ /* install the vars from the {} params */
+ for (header = var_event->headers; header; header = header->next) {
+ switch_channel_set_variable(originate_status[i].peer_channel, header->name, header->value);
+ }
+ switch_event_create(&event, SWITCH_EVENT_CHANNEL_ORIGINATE);
+ switch_assert(event);
+ switch_channel_event_set_data(originate_status[i].peer_channel, event);
+ switch_event_fire(&event);
+ }
}
if (originate_status[i].peer_channel) {
More information about the Freeswitch-svn
mailing list