From 94139889931c40416535816e946110e0a35091ce Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Wed, 9 Jul 2008 16:03:03 +0000 Subject: [PATCH] add copy_xml_cdr variable git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@8955 d0543943-73ff-0310-b7d9-9358b9ac24b2 --- src/include/switch_types.h | 1 + src/switch_ivr_bridge.c | 14 ++++++++++++++ 2 files changed, 15 insertions(+) diff --git a/src/include/switch_types.h b/src/include/switch_types.h index 86694401ae..d2b612b3ee 100644 --- a/src/include/switch_types.h +++ b/src/include/switch_types.h @@ -100,6 +100,7 @@ SWITCH_BEGIN_EXTERN_C #define SWITCH_PATH_SEPARATOR "/" #endif #define SWITCH_URL_SEPARATOR "://" +#define SWITCH_COPY_XML_CDR_VARIABLE "copy_xml_cdr" #define SWITCH_CURRENT_APPLICATION_VARIABLE "current_application" #define SWITCH_PROTO_SPECIFIC_HANGUP_CAUSE_VARIABLE "proto_specific_hangup_cause" #define SWITCH_CHANNEL_EXECUTE_ON_ANSWER_VARIABLE "execute_on_answer" diff --git a/src/switch_ivr_bridge.c b/src/switch_ivr_bridge.c index 0572ddc22a..8eb89ee537 100644 --- a/src/switch_ivr_bridge.c +++ b/src/switch_ivr_bridge.c @@ -382,6 +382,20 @@ static switch_status_t audio_bridge_on_exchange_media(switch_core_session_t *ses switch_channel_hangup(channel, SWITCH_CAUSE_NORMAL_CLEARING); } + if (switch_true(switch_channel_get_variable(channel, SWITCH_COPY_XML_CDR_VARIABLE))) { + switch_xml_t cdr; + char *xml_text; + + if (switch_ivr_generate_xml_cdr(session, &cdr) == SWITCH_STATUS_SUCCESS) { + if ((xml_text = switch_xml_toxml(cdr, SWITCH_FALSE))) { + switch_channel_set_variable_partner(channel, "b_leg_cdr", xml_text); + switch_safe_free(xml_text); + } + switch_xml_free(cdr); + } + } + + return SWITCH_STATUS_FALSE; }