From 5d4db94d27c61942509db8533d2ed545cf75e505 Mon Sep 17 00:00:00 2001
From: Moises Silva <moy@sangoma.com>
Date: Thu, 20 May 2010 16:08:22 -0400
Subject: [PATCH] openzap: custom data

---
 libs/openzap/mod_openzap/mod_openzap.c                   | 8 ++++++++
 .../src/ozmod/ozmod_sangoma_boost/ozmod_sangoma_boost.c  | 9 +++++++++
 2 files changed, 17 insertions(+)

diff --git a/libs/openzap/mod_openzap/mod_openzap.c b/libs/openzap/mod_openzap/mod_openzap.c
index 12d1664db1..1fb42ea0f5 100644
--- a/libs/openzap/mod_openzap/mod_openzap.c
+++ b/libs/openzap/mod_openzap/mod_openzap.c
@@ -1244,6 +1244,11 @@ static switch_call_cause_t channel_outgoing_channel(switch_core_session_t *sessi
 		caller_data.ani.type = outbound_profile->destination_number_ton;
 	}
 
+	if ((var = switch_event_get_header(var_event, "openzap_custom_call_data")) || (var = switch_core_get_variable("openzap_custom_call_data"))) {
+		zap_set_string((char *)caller_data.raw_data, var);
+		caller_data.raw_data_len = strlen(var);
+	}
+
 	caller_data.ani.plan = outbound_profile->destination_number_numplan;
 
 	/* blindly copy data from outbound_profile. They will be overwritten 
@@ -1438,6 +1443,9 @@ zap_status_t zap_channel_from_event(zap_sigmsg_t *sigmsg, switch_core_session_t
 	switch_channel_set_variable(channel, "openzap_span_name", sigmsg->channel->span->name);
 	switch_channel_set_variable_printf(channel, "openzap_span_number", "%d", sigmsg->channel->span_id);	
 	switch_channel_set_variable_printf(channel, "openzap_chan_number", "%d", sigmsg->channel->chan_id);
+	if (sigmsg->channel->caller_profile.raw_data_len) {
+		switch_channel_set_variable_printf(channel, "openzap_custom_call_data", "%s", sigmsg->channel->caller_profile.raw_data);
+	}
 		
 	switch_channel_set_state(channel, CS_INIT);
 	if (switch_core_session_thread_launch(session) != SWITCH_STATUS_SUCCESS) {
diff --git a/libs/openzap/src/ozmod/ozmod_sangoma_boost/ozmod_sangoma_boost.c b/libs/openzap/src/ozmod/ozmod_sangoma_boost/ozmod_sangoma_boost.c
index c32878debd..f257345690 100644
--- a/libs/openzap/src/ozmod/ozmod_sangoma_boost/ozmod_sangoma_boost.c
+++ b/libs/openzap/src/ozmod/ozmod_sangoma_boost/ozmod_sangoma_boost.c
@@ -338,6 +338,11 @@ static ZIO_CHANNEL_REQUEST_FUNCTION(sangoma_boost_channel_request)
 	event.called.ton = caller_data->ani.type;
 	event.called.npi = caller_data->ani.plan;
 
+	if (caller_data->raw_data_len) {
+		zap_set_string((char *)event.isup_in_rdnis, (char *)caller_data->raw_data);
+		event.isup_in_rdnis_size = caller_data->raw_data_len;
+	}
+
 	OUTBOUND_REQUESTS[r].status = BST_WAITING;
 	OUTBOUND_REQUESTS[r].span = span;
 
@@ -826,6 +831,10 @@ static void handle_call_start(zap_span_t *span, sangomabc_connection_t *mcon, sa
 	zap_set_string(zchan->caller_data.ani.digits, (char *)event->calling.digits);
 	zap_set_string(zchan->caller_data.dnis.digits, (char *)event->called.digits);
 	zap_set_string(zchan->caller_data.rdnis.digits, (char *)event->rdnis.digits);
+	if (event->isup_in_rdnis_size) {
+		zap_set_string((char *)zchan->caller_data.raw_data, (char *)event->isup_in_rdnis);
+		zchan->caller_data.raw_data_len = event->isup_in_rdnis_size;
+	}
 
 	if (strlen(event->calling_name)) {
 		zap_set_string(zchan->caller_data.cid_name, (char *)event->calling_name);