Skip to content
Snippets Groups Projects
Commit 3c36c29c authored by Joshua Colp's avatar Joshua Colp
Browse files

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
parent 3dae4279
No related branches found
No related tags found
No related merge requests found
......@@ -42,6 +42,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 ------------
------------------------------------------------------------------------------
......
......@@ -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.
......@@ -53,12 +53,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);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment