RestComm / restcomm-android-sdk

Android Mobile SDK to easily integrate communication features (WebRTC, messaging, presence, voice, video, screensharing) based on RestComm into native Mobile Applications
http://www.restcomm.com/
GNU Affero General Public License v3.0
153 stars 109 forks source link

Fix DNS resolving issue in Oreo #761

Closed atsakiridis closed 6 years ago

atsakiridis commented 6 years ago

Seems that the way jain-sip is retrieving the name servers to use breaks with Oreo. For more info check Privacy section of https://developer.android.com/about/versions/oreo/android-8.0-changes.html. Here's the console log when this issue occurs:

12-04 10:26:20.026 21384-21531/org.restcomm.android.olympus E/libc: Access denied finding property "net.dns1"
12-04 10:26:20.031 21384-21531/org.restcomm.android.olympus E/libc: Access denied finding property "net.dns2"
12-04 10:26:20.034 21384-21531/org.restcomm.android.olympus E/libc: Access denied finding property "net.dns3"
12-04 10:26:20.036 21384-21531/org.restcomm.android.olympus E/libc: Access denied finding property "net.dns4"
12-04 10:26:20.174 21384-21531/org.restcomm.android.olympus E/AndroidRuntime: FATAL EXCEPTION: signaling-handler-thread
Process: org.restcomm.android.olympus, PID: 21384
java.lang.RuntimeException: Failed to build SIP Register request
    at org.restcomm.android.sdk.SignalingClient.JainSipClient.JainSipMessageBuilder.buildRegisterRequest(JainSipMessageBuilder.java:215)
    at org.restcomm.android.sdk.SignalingClient.JainSipClient.JainSipClient.jainSipClientRegister(JainSipClient.java:547)
    at org.restcomm.android.sdk.SignalingClient.JainSipClient.JainSipJob$JainSipFsm.process(JainSipJob.java:186)
    at org.restcomm.android.sdk.SignalingClient.JainSipClient.JainSipJob.startFsm(JainSipJob.java:783)
    at org.restcomm.android.sdk.SignalingClient.JainSipClient.JainSipJobManager.add(JainSipJobManager.java:53)
    at org.restcomm.android.sdk.SignalingClient.JainSipClient.JainSipJobManager.add(JainSipJobManager.java:61)
    at org.restcomm.android.sdk.SignalingClient.JainSipClient.JainSipClient.open(JainSipClient.java:225)
    at org.restcomm.android.sdk.SignalingClient.SignalingHandler.handleMessage(SignalingHandler.java:75)
    at android.os.Handler.dispatchMessage(Handler.java:105)
    at android.os.Looper.loop(Looper.java:164)
    at android.os.HandlerThread.run(HandlerThread.java:65)
 Caused by: java.lang.RuntimeException: Failed to build base SIP request
    at org.restcomm.android.sdk.SignalingClient.JainSipClient.JainSipMessageBuilder.buildBaseRequest(JainSipMessageBuilder.java:193)
    at org.restcomm.android.sdk.SignalingClient.JainSipClient.JainSipMessageBuilder.buildRegisterRequest(JainSipMessageBuilder.java:200)
    at org.restcomm.android.sdk.SignalingClient.JainSipClient.JainSipClient.jainSipClientRegister(JainSipClient.java:547) 
    at org.restcomm.android.sdk.SignalingClient.JainSipClient.JainSipJob$JainSipFsm.process(JainSipJob.java:186) 
    at org.restcomm.android.sdk.SignalingClient.JainSipClient.JainSipJob.startFsm(JainSipJob.java:783) 
    at org.restcomm.android.sdk.SignalingClient.JainSipClient.JainSipJobManager.add(JainSipJobManager.java:53) 
    at org.restcomm.android.sdk.SignalingClient.JainSipClient.JainSipJobManager.add(JainSipJobManager.java:61) 
    at org.restcomm.android.sdk.SignalingClient.JainSipClient.JainSipClient.open(JainSipClient.java:225) 
    at org.restcomm.android.sdk.SignalingClient.SignalingHandler.handleMessage(SignalingHandler.java:75) 
    at android.os.Handler.dispatchMessage(Handler.java:105) 
    at android.os.Looper.loop(Looper.java:164) 
    at android.os.HandlerThread.run(HandlerThread.java:65) 
 Caused by: java.lang.NullPointerException: Attempt to invoke interface method 'java.lang.String android.javax.sip.address.Hop.getHost()' on a null object reference
    at org.restcomm.android.sdk.SignalingClient.JainSipClient.JainSipMessageBuilder.createRouteHeader(JainSipMessageBuilder.java:511)
    at org.restcomm.android.sdk.SignalingClient.JainSipClient.JainSipMessageBuilder.buildBaseRequest(JainSipMessageBuilder.java:155)
    at org.restcomm.android.sdk.SignalingClient.JainSipClient.JainSipMessageBuilder.buildRegisterRequest(JainSipMessageBuilder.java:200) 
    at org.restcomm.android.sdk.SignalingClient.JainSipClient.JainSipClient.jainSipClientRegister(JainSipClient.java:547) 
    at org.restcomm.android.sdk.SignalingClient.JainSipClient.JainSipJob$JainSipFsm.process(JainSipJob.java:186) 
    at org.restcomm.android.sdk.SignalingClient.JainSipClient.JainSipJob.startFsm(JainSipJob.java:783) 
    at org.restcomm.android.sdk.SignalingClient.JainSipClient.JainSipJobManager.add(JainSipJobManager.java:53) 
    at org.restcomm.android.sdk.SignalingClient.JainSipClient.JainSipJobManager.add(JainSipJobManager.java:61) 
    at org.restcomm.android.sdk.SignalingClient.JainSipClient.JainSipClient.open(JainSipClient.java:225) 
    at org.restcomm.android.sdk.SignalingClient.SignalingHandler.handleMessage(SignalingHandler.java:75) 
    at android.os.Handler.dispatchMessage(Handler.java:105) 
    at android.os.Looper.loop(Looper.java:164) 
    at android.os.HandlerThread.run(HandlerThread.java:65) 
atsakiridis commented 6 years ago

Seems it's still occurring in @ognjenns's device. Somehow although for emulator all is good in Nexus 5X it breaks, and the problem isn't that the DNS settings aren't configured. Logs clearly show that they are but somehow don't take effect

atsakiridis commented 6 years ago

Was closed by mistake due to a merge

atsakiridis commented 6 years ago

Turns out this was indeed fixed, it's just that we still get the log error somehow:

12-08 11:46:09.189 7784-7816/org.restcomm.android.olympus I/NotificationManager: Updating DNS servers for dnsjava with: 192.168.1.1, i/f: wlan0
...
12-08 11:46:11.015 7784-7816/org.restcomm.android.olympus V/JainSipClient: bind()
12-08 11:46:11.024 7784-7816/org.restcomm.android.olympus V/JainSipClient: getIPAddress(): 192.168.1.31
12-08 11:46:11.080 7784-7816/org.restcomm.android.olympus V/JainSipClient: jainSipRegister()
12-08 11:46:11.082 7784-7816/org.restcomm.android.olympus V/JainSipClient: jainSipRegister(), jobs status: Job count: 1, details: 
...
12-08 11:46:11.110 7784-7816/org.restcomm.android.olympus E/libc: Access denied finding property "net.dns1"
12-08 11:46:11.110 7816-7816/? W/2.168.1.31/5090: type=1400 audit(0.0:1666): avc: denied { read } for name="u:object_r:net_dns_prop:s0" dev="tmpfs" ino=11476 scontext=u:r:untrusted_app:s0:c512,c768 tcontext=u:object_r:net_dns_prop:s0 tclass=file permissive=0
12-08 11:46:11.111 7784-7816/org.restcomm.android.olympus E/libc: Access denied finding property "net.dns2"
12-08 11:46:11.111 7784-7816/org.restcomm.android.olympus E/libc: Access denied finding property "net.dns3"

Let's open a new issue to investigate why this happens: #770