邪门! Android 4.0.3 /4.0.4 丢弃 5060 端口分包的SIP消息

现象:   在一SIP客户端增加视频功能以后, 发现有些Android 终端无法接收呼叫, 但是发起呼叫没有问题.  

分析过程:

首先是怀疑服务器问题, SIP UAS 没有把呼叫转发到UAC上来.  在服务器进行抓包, 发现这个呼叫的INVITE 确实有发出来,地址, 端口都没错.  但是通过分析包,发现这个包的长度由于>MTU长度 导致分包, 网络底层是通过两个frame 发出去的.  这应该不是问题, 我们的 SIP UAS 和 UAC采用TCP通讯, , 上层是不用管底下怎么分包的,.

       那是什么问题导致没有收到包呢?  继续在终端抓包, 发现包确实有收到, 但是上层没有收到,  socket的收消息调用仔细检查也没有发现什么问题, 问题到这里好像没法查了.  先不管其他的, 由于是出现分包的地方出现错误, 先缩小包, 把包压缩在一个MTU以下,看能不能收到. 缩小到一个MTU以下呼叫确实能收到.  初步断定和手机的系统有关, 不过Android 这么多人用的系统, 不会有这么大的bug.吧.

       怀着谨慎的态度, 在网上search了一下, 有人发现了同样的bug . 基本上可以确定是系统的问题.

    https://code.google.com/p/android/issues/detail?id=34727

    https://code.google.com/p/android/issues/detail?id=32736

   而其中一个帖子提到只要TCP 源端口和目的端口中没有使用5060端口, 就没有问题.  由于我们服务器采用的是5060端口, 重新调整服务器端口进行测试, 发现果然不存在问题. 这个问题比较邪门!  有空还要研究一下!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值