[asterisk-bugs] [JIRA] (ASTERISK-29253) Incorrect bridging on transfer
Yury Kirsanov (JIRA)
noreply at issues.asterisk.org
Sat Apr 16 07:12:57 CDT 2022
[ https://issues.asterisk.org/jira/browse/ASTERISK-29253?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=258795#comment-258795 ]
Yury Kirsanov commented on ASTERISK-29253:
------------------------------------------
This patch works as well for Asterisk 18, please just manually copy the lines with + sign into your bridge_simple.c and recompile. Let me know how it goes!
Hope this helps and hopefully it will be checked by Digium and included into Asterisk. I was waiting for them to do this and that's why I wasn't posting anything about the patch here.
```
Description: Unhold channels on join simple bridge
Last-Update: 2021-06-17
--- asterisk-16.15.0~dfsg.orig/bridges/bridge_simple.c
+++ asterisk-16.15.0~dfsg/bridges/bridge_simple.c
@@ -155,6 +155,15 @@ static int simple_bridge_join(struct ast
ast_channel_unlock(c0);
ast_channel_unlock(c1);
+ if (ast_channel_hold_state(c1) == AST_CONTROL_HOLD) {
+ ast_debug(1, "Channel %s simulating UNHOLD for bridge simple join.\n", ast_channel_name(c1));
+ ast_indicate(c1, AST_CONTROL_UNHOLD);
+ }
+ if (ast_channel_hold_state(c0) == AST_CONTROL_HOLD) {
+ ast_debug(1, "Channel %s simulating UNHOLD for bridge simple join.\n", ast_channel_name(c0));
+ ast_indicate(c0, AST_CONTROL_UNHOLD);
+ }
+
if (!new_top) {
/* Failure. We'll just have to live with the current topology. */
return 0;
```
> 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, 18.1.1
> Environment: Ubuntu Linux 18.04.5 LTS
> Reporter: Yury Kirsanov
> Assignee: Unassigned
> Attachments: bridge_simple.tar.gz, bridge_softmix.tar.gz, call_flow.txt
>
>
> 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