summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoshua Colp <jcolp@digium.com>2017-05-09 10:25:29 +0000
committerJoshua Colp <jcolp@digium.com>2017-05-09 05:38:51 -0500
commit097f90220afa8fcd4f5f162f83d8607ee228c319 (patch)
treeccead916e1029375e8db72f7c2eeed20c415290e
parent1e0213616c24fdea3b6bd6f5529749776a3127f0 (diff)
res_hep_rtcp: Provide chan_sip Call-ID for RTCP messages.
This change adds the required logic to allow the SIP Call-ID to be placed into the HEP RTCP traffic if the chan_sip module is used. In cases where the option is enabled but the channel is not either SIP or PJSIP then the code will fallback to the channel name as done previously. Based on the change on Nir's branch at: team/nirs/hep-chan-sip-support ASTERISK-26427 Change-Id: I09ffa5f6e2fdfd99ee999650ba4e0a7aad6dc40d
-rw-r--r--CHANGES6
-rw-r--r--configs/samples/hep.conf.sample6
-rw-r--r--res/res_hep_rtcp.c18
3 files changed, 25 insertions, 5 deletions
diff --git a/CHANGES b/CHANGES
index 010b7e136..04da51a0e 100644
--- a/CHANGES
+++ b/CHANGES
@@ -33,6 +33,12 @@ res_pjsip_config_wizard
endpoint/outbound_proxy, aor/outbound_proxy and registration/outbound_proxy
parameters.
+res_hep_rtcp
+------------------
+ * If the 'call-id' value is specified for the uuid_type option and a
+ chan_sip channel is used the resulting HEP traffic will now contain the
+ SIP Call-ID instead of the Asterisk channel name.
+
------------------------------------------------------------------------------
--- Functionality changes from Asterisk 14.3.0 to Asterisk 14.4.0 ------------
------------------------------------------------------------------------------
diff --git a/configs/samples/hep.conf.sample b/configs/samples/hep.conf.sample
index 3d1e74139..32bd8df39 100644
--- a/configs/samples/hep.conf.sample
+++ b/configs/samples/hep.conf.sample
@@ -24,5 +24,9 @@ capture_id = 1234 ; A unique integer identifier for this
; with each packet from this server.
uuid_type = call-id ; Specify the preferred source for the Homer
; correlation UUID. Valid options are:
- ; - 'call-id' for the PJSIP SIP Call-ID
+ ; - 'call-id' for the PJSIP or chan_sip SIP
+ ; Call-ID
; - 'channel' for the Asterisk channel name
+ ; Note: If 'call-id' is specified but the
+ ; channel is not PJSIP or chan_sip then the
+ ; Asterisk channel name will be used instead.
diff --git a/res/res_hep_rtcp.c b/res/res_hep_rtcp.c
index fb80184b9..bedccc78e 100644
--- a/res/res_hep_rtcp.c
+++ b/res/res_hep_rtcp.c
@@ -55,12 +55,22 @@ static char *assign_uuid(struct ast_json *json_channel)
return NULL;
}
- if (uuid_type == HEP_UUID_TYPE_CALL_ID && ast_begins_with(channel_name, "PJSIP")) {
- struct ast_channel *chan = ast_channel_get_by_name(channel_name);
+ if (uuid_type == HEP_UUID_TYPE_CALL_ID) {
+ struct ast_channel *chan = NULL;
char buf[128];
- if (chan && !ast_func_read(chan, "CHANNEL(pjsip,call-id)", buf, sizeof(buf))) {
- uuid = ast_strdup(buf);
+ if (ast_begins_with(channel_name, "PJSIP")) {
+ chan = ast_channel_get_by_name(channel_name);
+
+ if (chan && !ast_func_read(chan, "CHANNEL(pjsip,call-id)", buf, sizeof(buf))) {
+ uuid = ast_strdup(buf);
+ }
+ } else if (ast_begins_with(channel_name, "SIP")) {
+ chan = ast_channel_get_by_name(channel_name);
+
+ if (chan && !ast_func_read(chan, "SIP_HEADER(call-id)", buf, sizeof(buf))) {
+ uuid = ast_strdup(buf);
+ }
}
ast_channel_cleanup(chan);