【问题标题】:Android M : VoIP, JAINSIP, SipStack; inconsistent SipProvider Exception when creating a listening point with tls enabledAndroid M:VoIP、JAINSIP、SipStack;创建启用 tls 的侦听点时出现不一致的 SipProvider 异常
【发布时间】:2023-03-07 01:27:01
【问题描述】:

更新 5
正在发生的事情的要点:tcp 侦听点是在堆栈初始化下创建的。为此,在我们的例子中,我们不能使用现有对象。
所以我要做的是检查mTcp 是否不是null,如果是,则删除侦听点并且函数继续进行堆栈初始化,但总是跳过!=null,然后是随之而来的异常... 注意:每次使用随机端口号都不适用于创建侦听点在 Android 中不起作用,而在 iOS 中同样适用。

更新 4
在小米米 4 中开始面对这个问题:
SipProvider 异常是 android.javax.sip.InvalidArgumentException:绑定失败:EADDRINUSE(地址已在使用中)

更新 3
似乎有一种例外情况交替出现的模式。但是立即的第二次尝试也成功了;
1. 第一次调用 createListeningPoint() -> 异常 2 或 1
2. 之后的第二次尝试 -> 成功
3. 之后,当 1. 发生时 -> 异常 1 或 2
4. 第二次尝试 -> 成功。 . .

更新 2

异常 1 和 2 似乎在没有任何模式的情况下重现,但在 异常 2 之后第二次尝试成功,当它是 异常 1 时 - 它会持续一段时间并且反复给出相同的例外。


更新 1

1. SipProvider 异常仅在 sip 堆栈销毁后发生一次。第二次尝试注册/初始化堆栈或创建监听点总是成功的。

2. 另一台运行 Android M 的 Nexus 5 设备没有相同的行为;一切都按预期工作。

3. 现在摩托罗拉 Nexus 6 Android M 也出现了同样的问题。不确定这是由于更新了其中一个应用程序还是操作系统。第二次尝试也没有成功。


以下行为不一致随机。我没有重现它的精确步骤。

仅在 Android M ota 更新后的 Nexus 5 上发生,

我在 *VoIP 应用程序中使用 JainSip。
场景:当 **createListeningPoint
tls 启用 的情况下被调用时;

listeningPoint = mSipStack.createListeningPoint("stringIp",intPortNumber,
                    "stringTls");

这些是随机发生的异常

例外 1

SipProvider Exception is java.lang.IllegalArgumentException:   
cipherSuite TLS_DH_anon_WITH_AES_128_CBC_SHA is not supported.  

例外 2

SipProvider Exception is android.javax.sip.InvalidArgumentException:  
bind failed: EADDRINUSE (Address already in use)  

对于 Sip Stack jar,我正在使用:
Maven android jain sip 并尝试过 jenkins jsip

请注意以下几点:
1.相同的代码在其他设备和操作系统中按预期工作。 Android 6.0 (API 23) 以下/之前的版本。
2. 代码在加载到摩托罗拉 Nexus 6 的 Android M 预览版 SDK 中按预期工作
3. 有尚未在多个装有 Android M 的设备上进行测试,甚至没有在多个 Nexus 5 (s) 上进行测试。当我这样做时,我会发布更新。

我搜索了这个问题,找不到太多,尝试使用 setEnabledCipherSuites 处理异常 1 - 不确定如何实现它 - 并确保在堆栈注销时监听点为空/已销毁,用于异常 2。

问题是有没有人有同样的经历或知道发生了什么,如何解决(?)

【问题讨论】:

    标签: android sip voip android-6.0-marshmallow jain-sip


    【解决方案1】:

    我通过注释来修复它
    "TLS_DH_anon_WITH_AES_128_CBC_SHA",
    “SSL_DH_anon_WITH_3DES_EDE_CBC_SHA”

    在 SipStackImpl.java 的 'cipherSuites' String[] 中

    Android 6 不再支持这两个

    【讨论】:

    • 您可以只创建密码套件数组的两个实例,一个用于 pre M,一个用于 M+。 M+ 不应包含匿名密码套件(其中包含 anon),因为它们不再受支持。
    猜你喜欢
    • 1970-01-01
    • 2021-03-11
    • 2019-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-30
    相关资源
    最近更新 更多