Android M: VoIP、JAINSIP、SipStack;创建启用tls的监听点时出现不一致SipProvide



UPDATE 5:
发生的要点: tcp侦听点是在堆栈初始化下创建的。因此,在本例中,不能使用现有对象。
因此,我所做的是检查mTcp是否不是null,如果是,则删除侦听点,函数继续进行堆栈初始化,但!=null总是被跳过,然后随后的异常…
注意:每次使用随机端口号不能用于创建监听点,在Android上不起作用,而在iOS上同样有效。

更新4

:
从小米4开始面临这个问题:
SipProvider异常是android.javax.sip.InvalidArgumentException: bind failed: EADDRINUSE(地址已经在使用中)

更新3 :
似乎有一种例外交替出现的模式。但是紧接着的第二次尝试也成功了;
1. 第一次调用createListeningPoint() ->例外2或1
2. 在此之后的第二次尝试->成功
3.之后,当1。 happens ->异常1或2
4. 第二次尝试->成功…

UPDATE 2:

异常1和2似乎没有任何模式地复制,但第二次尝试在异常2之后成功,当它是异常1时,它会坚持一段时间并反复给出相同的异常。


UPDATE 1:

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

2。另一个运行在Android M上的Nexus 5设备没有相同的行为;一切都按预期进行。

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


以下行为不一致随机。我没有精确的步骤来复制它。
这是
仅在Nexus 5上Android M ota更新后,

我在*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堆栈jar(s),我使用:
Maven android jain sip和已经尝试jenkins jsip

注意:
1。相同的代码在Android 6.0 (API 23)以下/之前的其他设备和os版本中正常工作。
2。 Android M预览sdk加载到Motorola Nexus 6后,代码正常运行
3。还没有在Android M的多个设备上测试过,甚至没有在多个Nexus 5 (s)上测试过。我会在测试后发布更新。

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

问题是有没有人经历过同样的事情或者知道发生了什么,如何解决

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

在SipStackImpl.java中的'cipherSuites'字符串[]

Android 6不再支持这两个

最新更新