FreeSwitch 修改代码使UPDATE消息和对应的SDP进行A到B腿透传功能

本文介绍如何修改FreeSwitch源码,使其在收到A腿UPDATE消息后转发给B腿,涉及sofia_update_callee_id、sofia_send_callee_id和sofia_receive_message函数的修改,以及如何在早期媒体阶段控制UPDATE消息的转发,并通过设置变量确保消息来源。最后通过WireShark验证了UPDATE消息的透传功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

FreeSwitch默认收到A-leg的UPDATE消息后不会发送给B-leg,通过修改代码的方式增加一个update_passthrough变量字段来控制UPDATE消息A到B腿转发的功能。

如果是在早期媒体阶段也需要转发UPDATE消息,可以通过update_passthrough_on_early来控制是否在早期媒体阶段转发UPDATE消息。

由于A腿和B腿之间使用消息队列进行通信,UPDATE消息一般使用SWITCH_MESSAGE_INDICATE_DISPLAY消息进行传输,即A腿向B腿发送一个SWITCH_MESSAGE_INDICATE_DISPLAY消息,B腿收到后根据情况进行UPDATE操作,但FreeSwitch内部也有很多功能对消息队列进行了SWITCH_MESSAGE_INDICATE_DISPLAY消息发送,如果贸然改动可能导致A腿并没有收到UPDATE消息,B腿却发出去一个UPDATE消息,这时需要在A腿发往B腿消息中增加一个变量来证明此消息使来源于A腿。

本文章改动是从freeswitch的1.10.6版本上进行的改动,过早的版本,或者过于未来的版本可能有改动,如果时间不长应该大同小异。

1.首先处理A腿接收UPDATE消息的部分:

进入freeswitch源码的src/mod/endpoints/mod_sofia/sofia.c里面的sofia_update_callee_id函数,找到其中的如下代码

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

jkkj1630

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值