ConnectSDK / Connect-SDK-Cordova-Plugin

Cordova/PhoneGap plugin for Connect SDK
Apache License 2.0
67 stars 46 forks source link

ConnectSDK.discoveryManager.startDiscovery causes app to crash on Android 7.0 #55

Closed scottmizo closed 7 years ago

scottmizo commented 7 years ago

Cordova 5.4.1 Cordova Android 4.1.1 Connect-SDK-Cordova-Plugin 1.6 Android 7.0

When calling ConnectSDK.discoveryManager.startDiscovery(), the app crashes. Error occurs with a custom app and connectsdk.cordova_api_sampler. Error is not present with Android 6

Stack trace:

WhisperLink: WhisperLinkPlatform - bindSdk: app=com.connectsdk.cordova_api_sampler WhisperLink: WhisperLinkPlatform - bindSdk: done, result=true System.err: java.net.SocketException: Socket closed System.err: at java.net.PlainDatagramSocketImpl.receive0(Native Method) System.err: at java.net.AbstractPlainDatagramSocketImpl.receive(AbstractPlainDatagramSocketImpl.java:147) System.err: at java.net.DatagramSocket.receive(DatagramSocket.java:811) System.err: at com.connectsdk.discovery.provider.ssdp.SSDPClient.multicastReceive(SSDPClient.java:109) System.err: at com.connectsdk.discovery.provider.SSDPDiscoveryProvider$4.run(SSDPDiscoveryProvider.java:268) System.err: at java.lang.Thread.run(Thread.java:761) System.err: java.net.SocketException: Socket closed System.err: at java.net.PlainDatagramSocketImpl.receive0(Native Method) System.err: at java.net.AbstractPlainDatagramSocketImpl.receive(AbstractPlainDatagramSocketImpl.java:147) System.err: at java.net.DatagramSocket.receive(DatagramSocket.java:811) System.err: at com.connectsdk.discovery.provider.ssdp.SSDPClient.multicastReceive(SSDPClient.java:109) System.err: at com.connectsdk.discovery.provider.SSDPDiscoveryProvider$4.run(SSDPDiscoveryProvider.java:268) System.err: at java.lang.Thread.run(Thread.java:761)

scottmizo commented 7 years ago

Solution:

Turns out that datagramSocket.disconnect() was hanging the thread. Is disconnect necessary?

Looks like a pull request has been submitted:

https://github.com/ConnectSDK/Connect-SDK-Android-Core/pull/93

alexb-geronimo commented 7 years ago

@scottmizo Can u please tell me how did you solve this? U just updated the 'com.connectsdk:connect-sdk-android:1.6.0' or you did something extra in your code, like not disconnecting something?

scottmizo commented 7 years ago

@alexb-geronimo Yes. Remove the datagramSocket.disconnect() from the SSDPClient.

https://github.com/ConnectSDK/Connect-SDK-Android-Core/pull/93/commits/edc686aaa0eed1cdac5e70b97c050ebb69c04d5f