Skip to content

[Bug]: Android SDK v5.x: Network requests to api.onesignal.com fail with UnknownHostException and Connection reset in the UAE #1189

Description

@midhlajnazar

What happened?

When initializing onesignal_flutter (v5.5.2 / Android SDK 051002) on Android (both emulators and physical devices), OneSignal fails to fetch parameters or initialize because requests to https://api.onesignal.com consistently throw UnknownHostException and SocketException: Connection reset during the TLS handshake.

Steps to reproduce?

1.
Initialize onesignal_flutter (^5.5.2) in a Flutter application on Android using a valid OneSignal App ID:
Dart
OneSignal.initialize("YOUR_ONESIGNAL_APP_ID");
2.
Run the application on an Android emulator or a physical Android device connected to a standard network/cellular network in the UAE (using local ISPs like Etisalat or du) without a VPN enabled.
3.
Inspect Logcat logs during app startup.
4.
Observe that OneSignal's background worker attempts to fetch Android parameters (GET https://api.onesignal.com/apps/.../android_params.js) and immediately fails.
5.
Notice the resulting java.net.UnknownHostException and java.net.SocketException: Connection reset errors in the logs.

What did you expect to happen?

nslookup api.onesignal.com and curl requests to https://api.onesignal.com time out both on local Wi-Fi and mobile cellular data in the UAE

OneSignal Flutter SDK version

Plugin Version: onesignal_flutter: ^5.5.2 • Android SDK Version: 051002 (Flutter wrapper 050612) • Platform: Android (Emulator & Physical Devices) • Region/Network: United Arab Emirates (UAE) - ISPs (Etisalat / du)

Which platform(s) are affected?

  • iOS
  • Android

Relevant log output

W/OneSignal(31479): [OneSignal-IO-2] HttpClient: null Error thrown from network stack. 
W/OneSignal(31479): java.net.SocketException: Connection reset
W/OneSignal(31479): 	at java.net.SocketInputStream.read(SocketInputStream.java:191)
W/OneSignal(31479): 	at java.net.SocketInputStream.read(SocketInputStream.java:143)
W/OneSignal(31479): 	at com.android.org.conscrypt.ConscryptEngineSocket$SSLInputStream.readFromSocket(ConscryptEngineSocket.java:1015)
W/OneSignal(31479): 	at com.android.org.conscrypt.ConscryptEngineSocket$SSLInputStream.processDataFromSocket(ConscryptEngineSocket.java:979)
W/OneSignal(31479): 	at com.android.org.conscrypt.ConscryptEngineSocket$SSLInputStream.-$$Nest$mprocessDataFromSocket(ConscryptEngineSocket.java:0)
W/OneSignal(31479): 	at com.android.org.conscrypt.ConscryptEngineSocket.doHandshake(ConscryptEngineSocket.java:244)
W/OneSignal(31479): 	at com.android.org.conscrypt.ConscryptEngineSocket.startHandshake(ConscryptEngineSocket.java:226)
W/OneSignal(31479): 	at com.android.okhttp.internal.io.RealConnection.connectTls(RealConnection.java:194)
W/OneSignal(31479): 	at com.android.okhttp.internal.io.RealConnection.connectSocket(RealConnection.java:151)
W/OneSignal(31479): 	at com.android.okhttp.internal.io.RealConnection.connect(RealConnection.java:114)
W/OneSignal(31479): 	at com.android.okhttp.internal.http.StreamAllocation.findConnection(StreamAllocation.java:186)
W/OneSignal(31479): 	at com.android.okhttp.internal.http.StreamAllocation.findHealthyConnection(StreamAllocation.java:128)
W/OneSignal(31479): 	at com.android.okhttp.internal.http.StreamAllocation.newStream(StreamAllocation.java:97)
W/OneSignal(31479): 	at com.android.okhttp.internal.http.HttpEngine.connect(HttpEngine.java:289)
W/OneSignal(31479): 	at com.android.okhttp.internal.http.HttpEngine.sendRequest(HttpEngine.java:232)
W/OneSignal(31479): 	at com.android.okhttp.internal.huc.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:465)
W/OneSignal(31479): 	at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:411)
W/OneSignal(31479): 	at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getResponseCode(HttpURLConnectionImpl.java:542)
W/OneSignal(31479): 	at com.android.okhttp.internal.huc.DelegatingHttpsURLConnection.getResponseCode(DelegatingHttpsURLConnection.java:106)
W/OneSignal(31479): 	at com.android.okhttp.internal.huc.HttpsURLConnectionImpl.getResponseCode(HttpsURLConnectionImpl.java:27)
W/OneSignal(31479): 	at com.onesignal.core.internal.http.impl.HttpClient$makeRequestIODispatcher$job$1.invokeSuspend(HttpClient.kt:217)
W/OneSignal(31479): 	at com.onesignal.core.internal.http.impl.HttpClient$makeRequestIODispatcher$job$1.invoke(HttpClient.kt:8)
W/OneSignal(31479): 	at com.onesignal.core.internal.http.impl.HttpClient$makeRequestIODispatcher$job$1.invoke(HttpClient.kt:2)
W/OneSignal(31479): 	at com.onesignal.common.threading.ThreadUtilsKt$launchOnIO$1.invokeSuspend(ThreadUtils.kt:170)
W/OneSignal(31479): 	at com.onesignal.common.threading.ThreadUtilsKt$launchOnIO$1.invoke(ThreadUtils.kt:8)
W/OneSignal(31479): 	at com.onesignal.common.threading.ThreadUtilsKt$launchOnIO$1.invoke(ThreadUtils.kt:2)
W/OneSignal(31479): 	at com.onesignal.common.threading.OneSignalDispatchers$launchOnIO$1.invokeSuspend(OneSignalDispatchers.kt:202)
W/OneSignal(31479): 	at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:34)
W/OneSignal(31479): 	at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:101)
W/OneSignal(31479): 	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1100)
W/OneSignal(31479): 	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
W/OneSignal(31479): 	at java.lang.Thread.run(Thread.java:1571)
I/OneSignal(31479): [OneSignal-IO-2] Failed to get Android parameters, trying again in 90 seconds.
D/OneSignal(31479): [OneSignal-IO-2] FeatureFlagsBackendService.fetchRemoteFeatureFlags(appId=XXXX)
D/OneSignal(31479): [OneSignal-IO-1] HttpClient: Request Sent = GET https://api.onesignal.com/apps/XXXX/sdk/features/android/051002 - Body: null - Headers: Accept=[application/vnd.onesignal.v1+json], OneSignal-Fid-Env=[gs=0;agp=9.0.1;flag=0;reg=0;def=0;prov=1;min=24;tgt=36;snd=-], OneSignal-Install-Id=[XXXXX], OneSignal-Subscription-Id=[XXXX], SDK-Version=[onesignal/android/051002], SDK-Wrapper=[onesignal/flutter/050612]
I/OneSignal(31479): [OneSignal-IO-1] HttpClient: Could not send last request, device is offline. Throwable: java.net.UnknownHostException
D/OneSignal(31479): [OneSignal-IO-1] FeatureFlagsBackendService: non-success status=-1 body=<empty>

Code of Conduct

  • I agree to follow this project's Code of Conduct

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions