author:张继飞

voip的呼叫保持(hold)是在 SDP 协议中实现的,记得以前做这部分时,曾出现过voip一方操作hold之后,在 SDP 包里面的media 参数里带有sendonly,服务器回复的200OK消息 SDP 包的media参数里面没有recvonly,而是sendrecv,这样的话,表示服务器没有识别出该re-invite是hold,便不会给对方播放hold music,导致rtp的流向也出现差错。

后来经过多方查阅资料,以及对SDP协议的分析,发现在hold时,需要将SDP 包中的connection information 中的address 改为0.0.0.0,resume后,在改为当前的media-address。

但后来更新了sip server的版本后,又发生了server不识别hold的问题。 因为将Trixbox升级到了2.8.0.4才出现的问题,所以下载了最新的Asterisk进行分析,找到sever处理hold部分的源码,在各个分支处发现对SDP的owner是有要求的,该 o 字段主要包括 username session ID,session Version,network type,address type和address。这里需要关注的是session Version,第一个re-invite要比invite的session Version 值大,后面的re-invite要比前面的re-invite的session Version值大;我在初始invite时便用随机方式产生一个session Version值,然后在re-invite时便对该值进行++操作,便解决了这个问题。同理作为被叫时,在对invite回复200OK时也是用随机方式给session Version赋值。

因为之前我对于session ID 和session Version用的都是具有特殊含义的固定值。

sip hold 解决方法【原创】相关推荐

  1. php的strpos不支持数字,php使用strpos判断字符串中数字类型子字符串出错的解决方法 原创...

    php使用strpos判断字符串中数字类型子字符串出错的解决方法 原创 这里有新鲜出炉的 PHP 面向对象编程,程序狗速度看过来! PHP 开源脚本语言 PHP(外文名: Hypertext Prep ...

  2. php判断是字符串类型,php使用strpos判断字符串中数字类型子字符串出错的解决方法 原创...

    本文实例讲述了php使用strpos判断字符串中数字类型子字符串出错的解决方法.分享给大家供大家参考,具体如下: 一.问题: 最近的开发中在程序代码里有一个随机数是否在给定字符串里的判断,我用了如下的 ...

  3. 如何去掉DataTable中的重复行(新增.net 2.0中最新解决方法---简便)

    .net 1.1中的解决方法(转) 1建立一个DataSetHelper类(DataSetHelper.cs) public class DataSetHelper ...{     public D ...

  4. php gif透明色,php缩放gif和png图透明背景变成黑色的解决方法

    php缩放gif和png图透明背景变成黑色的解决方法 发布于 2014-10-23 14:38:23 | 355 次阅读 | 评论: 0 | 来源: 网友投递 PHP开源脚本语言PHP(外文名: Hy ...

  5. 80端口未被占用,无法启动wamp的解决方法(原创)

    80端口未被占用,无法启动wamp的解决方法(原创) 参考文章: (1)80端口未被占用,无法启动wamp的解决方法(原创) (2)https://www.cnblogs.com/bison1989/ ...

  6. 记录一次公司点星PBX(DotAsterisk) 映射外网后外部SIP分机注册拨通无声音的故障解决方法

    一.环境说明 点星PBX呼叫系统部署在公司局域网,内网网段为 192.168.2.0 ,其IP地址是 192.168.2.200.公司通过一台H3C路由器链接到互联网,如下图. 二.要求 由于员工工作 ...

  7. 【Vegas原创】exp时,ORA-00932: 数据类型不一致解决方法

    现象: EXP-00056: 遇到 ORACLE 错误 932 ORA-00932: 数据类型不一致: 应为 BLOB, CLOB, 但却获得 CHAR EXP-00000: 导出终止失败 解决方法: ...

  8. 【Vegas原创】outlook连接exchange需要密码的解决方法

    环境:Exchange2007  Outlook2007  SBS2008  (非此环境,请慎重选择操作) 现象:Outlook连接Exchange,提示"正在连接到***",让输 ...

  9. 【Vegas原创】outlook发送时,报550 5.7.1 client does not have permissions to send as this sender解决方法...

    环境:exchange2007 outlook2007 AD 现象:老板要收外网邮件,但发送的时候需要用公司exchange来发.账户配置好后,一直报550 5.7.1 client does not ...

最新文章

  1. 如何轻松实现iOS9多任务管理器效果(iCarousel高级教程)
  2. 浅谈Redis与MySQL的耦合性以及利用管道完成MySQL到Redis的高效迁移
  3. 老外听到哪些中式英文是崩溃的?(转自外贸Jackson)
  4. oa 中会议推送 实现_揭秘“OA与ERP高端融合方案”三大亮点
  5. hdu 2049 考新郎
  6. 第55课 分解质因数 《小学生C++编程入门》
  7. jquery导航,按钮等特效 - apycom
  8. 安全出口指示灯警报、如何解除呢
  9. python创建文件的编码格式
  10. BZOJ2287 【POJ Challenge】消失之物 动态规划 分治
  11. amd cpu 安卓模拟器_Android 模拟器现已支持 AMD 处理器和 Hyper-V
  12. Android Unable to find source java class:<File>because it does not belong to any of the source dirs:
  13. Centos 7安装Oracle12c RAC
  14. 分区助手扩大c盘后自动修复_【分区助手】如何扩大C盘容量?
  15. 手把手教你玩物联网(二)---onenet云平台产品创建
  16. win10如何修改dns服务器地址,win10如何修改dns服务器地址
  17. Java基础笔试练习(八)
  18. 人人皆可操作的108个抖音项目:汽车领域细分及玩法变现 (7)
  19. 20. Python的字典嵌套
  20. 能力配不上位置,管理只能“累死”

热门文章

  1. linux bash -,linux bash 总结
  2. win10键盘全部没反应_Win10的键盘失灵解决办法
  3. 马斯克的SpaceX星链网遇散热危机,气温过高自动关机
  4. 陈皓:谈谈职业规划——CSDN对我的采访
  5. SELECT语句选项
  6. 如何从一个php文件向另一个地址post数据,不用表单和隐藏的变量
  7. 李宁是怎么输给安踏的?
  8. 成本4元、一个月前制成的外卖菜肴包,正霸占你的餐桌
  9. 脉脉就APP整改下架一事致歉:正积极排查 将尽快完成整改
  10. 不会延期!iPhone 12S预计如期在9月发售:升级三星LTPO屏幕