[asterisk-dev] UNHOLD the other channel in a bridge when swapping is completed

Ahmed Fouad afouad at gmail.com
Sun Dec 13 04:32:46 CST 2020


Hi Jousha,

No changes were made there the caller when clicks the transfer button send
INACTIVE then start the REFER process , the transfer completed fine but the
call in still in inactive state.
I can't change the caller behaviour so I had to change the Asterisk code a
few minutes ago :)

found my way through in bridge_channel.c

*ast_set2_flag(&bridge->feature_flags, dissolve,
AST_BRIDGE_FLAG_DISSOLVE_EMPTY);*

+ ch1 = AST_LIST_FIRST(&bridge->channels);
+ if (ast_channel_hold_state(ch1->chan) == AST_CONTROL_HOLD ) {
+ ast_indicate(ch1->chan, AST_CONTROL_UNHOLD);
+}

This will happen only when swapping channels so it won't affect the normal
bridge operations and of course I'd like to get your input if there a
better place to have this patch.

On Sun, Dec 13, 2020 at 12:22 PM Joshua C. Colp <jcolp at sangoma.com> wrote:

> On Sun, Dec 13, 2020 at 1:57 AM Ahmed Fouad <afouad at gmail.com> wrote:
>
>> Hi,
>>
>> I've a situation with remote attended transfer and like to solve it by
>> putting the 2nd channel in the bridge in UNHOLD state when swapping is
>> completed.
>> I started debugging the code with res_pjsip_refer.c: INVITE with Replaces
>> being attempted.
>>
>> I'm running Asterisk certified/16.8-cert3
>>
>> [Dec 12 12:03:20] DEBUG[10736] res_pjsip_refer.c: INVITE with Replaces
>> being attempted.  'PJSIP/XXXX-00000011' --> 'PJSIP/XXXX-0000000e'
>> [Dec 12 12:03:20] DEBUG[14235] bridge_channel.c: Bridge
>> 883a1d4a-580d-470d-8448-90b2a03b637b: 0x7f305403c998(PJSIP/XXXX-00000011)
>> is joining
>> [Dec 12 12:03:20] DEBUG[14235] bridge_channel.c: Bridge
>> 883a1d4a-580d-470d-8448-90b2a03b637b: pushing
>> 0x7f305403c998(PJSIP/XXXX-00000011) by swapping with
>> 0x7f305408bea8(PJSIP/XXXX-0000000e)
>> [Dec 12 12:03:20] DEBUG[14235] bridge_channel.c: Setting
>> 0x7f305408bea8(PJSIP/XXXX-0000000e) state from:0 to:2
>> [Dec 12 12:03:20] DEBUG[14235] bridge_channel.c: Bridge
>> 883a1d4a-580d-470d-8448-90b2a03b637b: pulling
>> 0x7f305408bea8(PJSIP/XXXX-0000000e)
>> [Dec 12 12:03:20] VERBOSE[14235] bridge_channel.c: Channel
>> PJSIP/XXXX-0000000e left 'simple_bridge' basic-bridge
>> <883a1d4a-580d-470d-8448-90b2a03b637b>
>> [Dec 12 12:03:20] DEBUG[14235] bridge_channel.c: Bridge
>> 883a1d4a-580d-470d-8448-90b2a03b637b: 0x7f305408bea8(PJSIP/XXXX-0000000e)
>> is leaving simple_bridge technology
>> [Dec 12 12:03:20] VERBOSE[14235] bridge_channel.c: Channel
>> PJSIP/XXXX-00000011 swapped with PJSIP/XXXX-0000000e into 'simple_bridge'
>> basic-bridge <883a1d4a-580d-470d-8448-90b2a03b637b>
>> [Dec 12 12:03:20] DEBUG[14235] bridge_native_rtp.c: Bridge
>> '883a1d4a-580d-470d-8448-90b2a03b637b'.  Checking compatability for
>> channels '*PJSIP/pstn-0000000f*' and 'PJSIP/XXXX-00000011'
>>
>> In this step I'd like to make sure that the other channel
>> *PJSIP/pstn-0000000f* in the bridge is off hold or put it off-hold.
>>
>> How can I accomplish it
>> ?
>>
>
> I believe such things should already happen[1], but if I recall you posted
> on the community forum about other code modifications[2]. Have you done
> changes in the SDP side? Otherwise you'd need to show exactly what is
> happening.
>
> [1]
> https://github.com/asterisk/asterisk/blob/certified/16.8/main/bridge.c#L4779
> [2]
> https://community.asterisk.org/t/chan-pjsip-add-support-for-passing-hold-and-unhold-requests-through/86738
>
> --
> Joshua C. Colp
> Asterisk Technical Lead
> Sangoma Technologies
> Check us out at www.sangoma.com and www.asterisk.org
> --
> _____________________________________________________________________
> -- Bandwidth and Colocation Provided by http://www.api-digital.com --
>
> asterisk-dev mailing list
> To UNSUBSCRIBE or update options visit:
>    http://lists.digium.com/mailman/listinfo/asterisk-dev



-- 
Best Regards,
Ahmed Fouad
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.digium.com/pipermail/asterisk-dev/attachments/20201213/dc0d5827/attachment.html>


More information about the asterisk-dev mailing list