[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