[asterisk-bugs] [JIRA] (ASTERISK-24346) Using "r" option on Dial() command prevents Remote-party-ID from reaching caller
Joshua Colp (JIRA)
noreply at issues.asterisk.org
Mon Dec 18 09:38:07 CST 2017
[ https://issues.asterisk.org/jira/browse/ASTERISK-24346?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Joshua Colp updated ASTERISK-24346:
-----------------------------------
Affects Version/s: 13.18.4
> Using "r" option on Dial() command prevents Remote-party-ID from reaching caller
> --------------------------------------------------------------------------------
>
> Key: ASTERISK-24346
> URL: https://issues.asterisk.org/jira/browse/ASTERISK-24346
> Project: Asterisk
> Issue Type: Bug
> Security Level: None
> Components: Applications/app_dial
> Affects Versions: 11.11.0, 13.18.4
> Environment: Reproduced on generic CentOS 6.5 and Elastix 2.4.
> Reporter: Dennis Buteyn
> Severity: Minor
> Attachments: right.pcap, wrong.pcap
>
>
> Background:
> Customer was trying to use RPID in a two-PBX configuration with intra-company SIP trunk to provide caller with called party name. Upon testing customer found that RPID information was received by callee but caller display showed dialed number.
> Configuration used to reproduce issue:
> Extension A <-SIP-> PBX-A <-SIP-> PBX-B <-SIP-> Extension B
> Options sendrpid=yes, trustrpid=yes defined where applicable.
> Wireshark trace showed that due to Dial() command to extension B with "r" option, PBX-B sent early RINGING notification without RPID header to PBX-A. Second RINGING notification was sent to PBX-A after PBX-B received RINGING notification from Extension B. PBX-A only propagated first RINGING notification to Extension A, second RINGING notification was ignored by PBX-A.
> Disabling "r" option on both systems allowed conforming SIP flow and RPID information was propagated properly to caller.
> Code in question that appears to be responsible in apps/app_dial.c:
> {noformat}
> static struct ast_channel *wait_for_answer(struct ast_channel *in,
> struct dial_head *out_chans, int *to, struct ast_flags64 *peerflags,
> char *opt_args[],
> struct privacy_args *pa,
> const struct cause_args *num_in, int *result, char *dtmf_progress,
> const int ignore_cc,
> struct ast_party_id *forced_clid, struct ast_party_id *stored_clid)
> {
> ...
> looping over frames
> ...
> switch (f->frametype) {
> case AST_FRAME_CONTROL:
> switch (f->subclass.integer) {
> ...
> case AST_CONTROL_RINGING:
> ++num_ringing;
> if (ignore_cc || cc_frame_received || num_ringing == numlines) {
> ast_verb(3, "%s is ringing\n", ast_channel_name(c));
> /* Setup early media if appropriate */
> if (single && !caller_entertained
> && CAN_EARLY_BRIDGE(peerflags, in, c)) {
> ast_channel_early_bridge(in, c);
> }
> if (!(pa->sentringing) && !ast_test_flag64(outgoing, OPT_MUSICBACK) && ast_strlen_zero(opt_args[OPT_ARG_RINGBACK])) {
> ast_indicate(in, AST_CONTROL_RINGING);
> pa->sentringing++;
> }
> }
> break;
> {noformat}
--
This message was sent by Atlassian JIRA
(v6.2#6252)
More information about the asterisk-bugs
mailing list