[asterisk-bugs] [JIRA] (ASTERISK-29253) Incorrect bridging on transfer

Yury Kirsanov (JIRA) noreply at issues.asterisk.org
Wed Jan 20 05:18:59 CST 2021


    [ https://issues.asterisk.org/jira/browse/ASTERISK-29253?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=253539#comment-253539 ] 

Yury Kirsanov edited comment on ASTERISK-29253 at 1/20/21 5:18 AM:
-------------------------------------------------------------------

Hi Joshua,
Thanks for you reply.
1. We're using PJSIP implementation
2. We're NOT using any NAT, for this specific test I've made sure we're not using even any RTP proxies or anything like that, everything is on pure public IP addresses.
3. Direct media is not occurring because we have different legs of calls each connecting to Asterisk server, so we always have either 'SIP Device -> Asterisk' or 'SIP Device -> External User' or 'Asterisk -> SIP Device' scenario
4. There's no issue with timing, RTP stream is constant and sequence numbers are in appropriate order, no lost packets too.
5. I'm happy to attach logs but not directly to this case as they have sensitive information. In my previous tickets George was asking me to put logs on some shared storage and then send him a link via email. I'm happy to do so for you.
6. I have verified and 100% sure that everything works as it should except to the point when Re-INVITE with 'Replaces:' header comes through to Asterisk asking to replace Call-ID of 'Asterisk -> External user' with 'SIP Device A -> Asterisk' and 100% sure that when 'bridge_simple' module is unloaded call is connected just fine. I've also checked and confirmed that in Replaces header there's a correct Call-ID for replacement call specified.
7. Timing module is enabled by default and uses res_timing_timerfd module.

Thanks!


was (Author: lt_flash):
Hi Joshua,
Thanks for you reply.
1. We're using PJSIP implementation
2. We're NOT using any NAT, for this specific test I've made sure we're not using even any RTP proxies or anything like that, everything is on pure public IP addresses.
3. Direct media is not occurring because we have different legs of calls each connecting to Asterisk server, so we always have either 'SIP Device -> Asterisk' or 'SIP Device -> External User' or 'Asterisk -> SIP Device' scenario
4. There's no issue with timing, RTP stream is constant and sequence numbers are in appropriate order, not lost packets too.
5. I'm happy to attach logs but not directly to this case as they have sensitive information. In my previous tickets George was asking me to put logs on some shared storage and then send him a link via email. I'm happy to do so for you.
6. I have verified and 100% sure that everything works as it should except to the point when Re-INVITE with 'Replaces:' header comes through to Asterisk asking to replace Call-ID of 'Asterisk -> External user' with 'SIP Device A -> Asterisk' and 100% sure that when 'bridge_simple' module is unloaded call is connected just fine. I've also checked and confirmed that in Replaces header there's a correct Call-ID for replacement call specified.
7. Timing module is enabled by default and uses res_timing_timerfd module.

Thanks!

> Incorrect bridging on transfer
> ------------------------------
>
>                 Key: ASTERISK-29253
>                 URL: https://issues.asterisk.org/jira/browse/ASTERISK-29253
>             Project: Asterisk
>          Issue Type: Bug
>      Security Level: None
>          Components: Bridges/bridge_simple
>    Affects Versions: 16.15.0, 17.9.0, 17.9.1, 18.1.0, 18.1.1
>         Environment: Ubuntu Linux 18.04.5 LTS
>            Reporter: Yury Kirsanov
>            Assignee: Unassigned
>            Severity: Minor
>
> We have an Asterisk server and one SIP device registered with it and one SIP trunk to another system. Also we another SIP device to call for test purposes.
> Here's a simplified diagram of call flow with attended transfer we're trying to achieve:
> SIP Device A -> Asterisk PBX -> SIP Trunk -> External User -> Attended transfer -> Asterisk PBX -> SIP Device B.
> SIP Device A originates a call to some pre-defined number that's routed into SIP trunk (TLS+SRTP). Remote party behind SIP trunk ("External user") answers this call and then starts attended transfer to SIP Device B on Asterisk PBX. That SIP trunk uses Re-INVITE with Replaces header in order to complete transfer. During transfer SIP Device A can hear MOH after External User initiated attended transfer to SIP Device B. Then External User tries to complete the transfer connecting SIP Device A with SIP Device B. Call connects but SIP Device A continues to hear Music On Hold while SIP Device B can hear what SIP Device A says.
> Now, if we unload module 'bridge_simple' Asterisk PBX starts to use 'bridge_softmix' module and connect calls correctly, SIP Device A can establish two way communication with SIP Device B. But during attended transfer no MOH is played at all even though Asterisk shows messages like 'Starting music on hold'. And without 'bridge_simple' no Music On Hold is played at all even if we set up just a local extension that plays MOH, like this:
> exten=>100,1,Answer()
> exten=>100,n,MusicOnHold()
> If we load bridge_simple then MOH is played fine but during transfer calls are bridged incorrectly.
> I'm happy to provide full logs upon request as I don't want to edit them.
> Also, if we use SIP REFER method for transferring calls there's another issue - when External User tries to finalize call transfer Asterisk drops established call to SIP Device B and immediately re-dials it. I believe this happens because SIP Trunk is not passing Replaces in Refer-To header, but that's another issue.



--
This message was sent by Atlassian JIRA
(v6.2#6252)



More information about the asterisk-bugs mailing list