Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Samsung S8/8+ SocketTimeoutException SSL handshake timed out #3699

Closed
originx opened this issue Nov 23, 2017 · 7 comments
Closed

Samsung S8/8+ SocketTimeoutException SSL handshake timed out #3699

originx opened this issue Nov 23, 2017 · 7 comments

Comments

@originx
Copy link

originx commented Nov 23, 2017

Hello guys,
we started to get a bulk increase in SocketTimeoutException SSL handshake timed out for S8 and S8+ phones.

Versions used:
`okhttp3 : '3.9.0'

retrofit : '2.3.0',

Samsung models:
SM-G950F
SM-G955F

Android version: 7.0
Kernel version 4.4.13-12401979
`
I tried creating a sample project that would try to fetch anything from any server to reproduce and politely report the issue but no avail, I cannot reproduce it steadily.

I am unsure but I have a feeling this happens when switching between Mobile network / Wifi or the device comes from sleep, after 2-3 attempts the connection punches trough.

Other phones / our health checks do not report this issue on other devices, or they are really minimal, samsung s8 / s8+ cover over 70% of the issues (and we have quite big userbase).

Do you have any hints for me how can I assist in creating a better error report or advices how to diagnose what is wrong and how to fix it.

Code that we use to setup okhttp client:


       builder.followSslRedirects(true);
        builder.followRedirects(true);
        builder.connectTimeout(90, TimeUnit.SECONDS);
        builder.readTimeout(90, TimeUnit.SECONDS);
        builder.writeTimeout(90, TimeUnit.SECONDS);
        builder.retryOnConnectionFailure(false);
        builder.cache((new Cache(app.getDir(CACHE_DIR, Context.MODE_PRIVATE), CACHE_SIZE))
       builder.interceptors().add(chain -> {
            if 
          (!chain.request().url().host().equals(URI.create(current.companyName().getUrl()).getHost())) 
         {
                return chain.proceed(chain.request());
            }
            Request.Builder builderChain = chain.request().newBuilder();
            builderChain.addHeader(AUTHORIZATION, credential);
            return chain.proceed(builderChain.build());
        });
        Request.Builder builderChain = chain.request().newBuilder();
            builderChain.header(USER_AGENT, USER_AGENT_VALUE);
            return chain.proceed(builderChain.build());
          builder.connectionPool(new ConnectionPool(5, 5, TimeUnit.MINUTES));

Caused by: java.net.SocketTimeoutException: SSL handshake timed out at 
com.android.org.conscrypt.NativeCrypto.SSL_do_handshake(Native Method) at 
com.android.org.conscrypt.OpenSSLSocketImpl.startHandshake(OpenSSLSocketImpl.java:364) at okhttp3.internal.connection.RealConnection.connectTls(RealConnection.java:299) at

HTTP request failure at io.reactivex.internal.operators.observable.ObservableSingleSingle$SingleElementObserver.onError(ObservableSingleSingle.java:95) at 
retrofit2.adapter.rxjava2.CallExecuteObservable.subscribeActual(CallExecuteObservable.java:55) at io.reactivex.Observable.subscribe(Observable.java:10903) at 
io.reactivex.internal.operators.observable.ObservableSingleSingle.b(ObservableSingleSingle.java:35) at io.reactivex.Single.a(Single.java:2700) at 
io.reactivex.internal.operators.single.SingleLift.b(SingleLift.java:44) at io.reactivex.Single.a(Single.java:2700) at 
io.reactivex.internal.operators.single.SingleLift.b(SingleLift.java:44) at io.reactivex.Single.a(Single.java:2700) at 
io.reactivex.internal.operators.single.SingleSubscribeOn$SubscribeOnObserver.run(SingleSubscribeOn.java:89) at io.reactivex.Scheduler$DisposeTask.run(Scheduler.java:452) at io.reactivex.internal.schedulers.ScheduledRunnable.run(ScheduledRunnable.java:61) at io.reactivex.internal.schedulers.ScheduledRunnable.call(ScheduledRunnable.java:52) at java.util.concurrent.FutureTask.run(FutureTask.java:237) at 
java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:272) at 
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133) at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607) at 
java.lang.Thread.run(Thread.java:762) Caused by: java.net.SocketTimeoutException: SSL handshake timed out at com.android.org.conscrypt.NativeCrypto.SSL_do_handshake(Native Method) at 
com.android.org.conscrypt.OpenSSLSocketImpl.startHandshake(OpenSSLSocketImpl.java:364) at okhttp3.internal.connection.RealConnection.connectTls(RealConnection.java:299) at 
okhttp3.internal.connection.RealConnection.establishProtocol(RealConnection.java:268) at 
okhttp3.internal.connection.RealConnection.connect(RealConnection.java:160) at 
okhttp3.internal.connection.StreamAllocation.findConnection(StreamAllocation.java:256) at 
okhttp3.internal.connection.StreamAllocation.findHealthyConnection(StreamAllocation.java:134) at okhttp3.internal.connection.StreamAllocation.newStream(StreamAllocation.java:113) at 
okhttp3.internal.connection.ConnectInterceptor.intercept(ConnectInterceptor.java:42) at 
okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:147) at 
okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:121) at 
okhttp3.internal.cache.CacheInterceptor.intercept(CacheInterceptor.java:93) at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:147) at 
okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:121) at 
okhttp3.internal.http.BridgeInterceptor.intercept(BridgeInterceptor.java:93) at 
okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:147) at 
okhttp3.internal.http.RetryAndFollowUpInterceptor.intercept(RetryAndFollowUpInterceptor.java:125) at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:147) at 
okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:121) at 
de.app.core.data.network.api.ApiModule$$Lambda$0.intercept(Unknown Source) at 
okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:147) at 
okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:121) at 
okhttp3.logging.HttpLoggingInterceptor.intercept(HttpLoggingInterceptor.java:143) at 
okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:147) at 
okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:121) at 
de.app.core.data.network.api.ApiModule$$Lambda$2.intercept(Unknown Source) at 
okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:147) at 
okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:121) at 
okhttp3.RealCall.getResponseWithInterceptorChain(RealCall.java:200) at 
okhttp3.RealCall.execute(RealCall.java:77) at retrofit2.OkHttpCall.execute(OkHttpCall.java:180) at
 retrofit2.adapter.rxjava2.CallExecuteObservable.subscribeActual(CallExecuteObservable.java:41) ... 16 mor
@grzegorzmalopolski
Copy link

grzegorzmalopolski commented Nov 28, 2017

Hi,

We have the same issue reported by users that can't download application content.

Problem started when we updated library from version: 3.4.2 to 3.9.0

Currently occured on devices:

LG X power Android version 4.3, 5.11 , 60, 6.11 , 7.0

Samsung S7 Android version 4.3, 5.11, 6.0, 6.11, 7.0

and also on:
Samsung J3 Android version
Samsung J5 Android version
Samsung SM-J530F Android version
Samsung S3 Android version
Samsung J7 Android version

Huawei P8 Lite Android version 4.3, 5.11, 6.0, 6.0.1, 7.0

RETROFIT_VERSION = "2.3.0"
OKHTTP_VERSION = "3.9.0"
RXJAVA_VERSION = "2.1.4"
APP_COMPILE_SDK_VERSION = 26
APP_BUILD_TOOLS_VERSION = '26.0.1'
APP_ANDROID_LIB_VERSION = '26.0.1'
APP_MIN_SDK_VERSION = 16
APP_TARGET_SDK_VERSION = 26
APP_PLAY_SERVICES_VERSION = "11.4.0"

OS Version: 7.0

Device: Galaxy S7

RAM Free: 29.2%

Disk Free: 56.8%

Crashed:
`ConnectivityManager: 0 0 0x0000000000000000
at pl.aaa.aaa.NonFatalCrashLog.log(NonFatalCrashLog.java:16)
at pl.aaa.aaa.view.fragment.aaaListFragment$1.onNext(aaaListFragment.java:136)
at pl.aaa.aaa.view.fragment.aaaListFragment$1.onNext(aaaListFragment.java:131)
at rx.observers.SafeSubscriber.onNext(SafeSubscriber.java:134)
at rx.internal.operators.OnSubscribeFilter$FilterSubscriber.onNext(OnSubscribeFilter.java:76)
at rx.internal.operators.OperatorSubscribeOn$SubscribeOnSubscriber.onNext(OperatorSubscribeOn.java:74)
at rx.internal.operators.OperatorDistinctUntilChanged$1.onNext(OperatorDistinctUntilChanged.java:96)
at rx.observers.SerializedObserver.onNext(SerializedObserver.java:91)
at rx.observers.SerializedSubscriber.onNext(SerializedSubscriber.java:94)
at rx.internal.operators.OnSubscribeConcatMap$ConcatMapSubscriber.innerNext(OnSubscribeConcatMap.java:182)
at rx.internal.operators.OnSubscribeConcatMap$ConcatMapInnerSubscriber.onNext(OnSubscribeConcatMap.java:335)
at rx.observers.Subscribers$5.onNext(Subscribers.java:235)
at com.github.pwittchen.reactivenetwork.library.network.observing.strategy.LollipopNetworkObservingStrategy$3.onAvailable(LollipopNetworkObservingStrategy.java:58)
at android.net.ConnectivityManager$CallbackHandler.handleMessage(ConnectivityManager.java:3100)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:154)
at android.os.HandlerThread.run(HandlerThread.java:61)

--

Non-fatal Exception: pl.aaa.aaa.internal.ImpossibruException: Error on download list for connection Connectivity{state=CONNECTED, type=0, name='MOBILE'}
at pl.aaa.aaa.NonFatalCrashLog.log(NonFatalCrashLog.java:16)
at pl.aaa.aaa.view.fragment.aaaListFragment$1.onNext(aaaListFragment.java:136)
at pl.aaa.aaa.view.fragment.aaaListFragment$1.onNext(aaaListFragment.java:131)
at rx.observers.SafeSubscriber.onNext(SafeSubscriber.java:134)
at rx.internal.operators.OnSubscribeFilter$FilterSubscriber.onNext(OnSubscribeFilter.java:76)
at rx.internal.operators.OperatorSubscribeOn$SubscribeOnSubscriber.onNext(OperatorSubscribeOn.java:74)
at rx.internal.operators.OperatorDistinctUntilChanged$1.onNext(OperatorDistinctUntilChanged.java:96)
at rx.observers.SerializedObserver.onNext(SerializedObserver.java:91)
at rx.observers.SerializedSubscriber.onNext(SerializedSubscriber.java:94)
at rx.internal.operators.OnSubscribeConcatMap$ConcatMapSubscriber.innerNext(OnSubscribeConcatMap.java:182)
at rx.internal.operators.OnSubscribeConcatMap$ConcatMapInnerSubscriber.onNext(OnSubscribeConcatMap.java:335)
at rx.observers.Subscribers$5.onNext(Subscribers.java:235)
at com.github.pwittchen.reactivenetwork.library.network.observing.strategy.LollipopNetworkObservingStrategy$3.onAvailable(LollipopNetworkObservingStrategy.java:58)
at android.net.ConnectivityManager$CallbackHandler.handleMessage(ConnectivityManager.java:3100)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:154)
at android.os.HandlerThread.run(HandlerThread.java:61)
Caused by java.net.SocketTimeoutException: SSL handshake timed out
at com.android.org.conscrypt.NativeCrypto.SSL_do_handshake(NativeCrypto.java)
at com.android.org.conscrypt.OpenSSLSocketImpl.startHandshake(OpenSSLSocketImpl.java:357)
at okhttp3.internal.connection.RealConnection.connectTls(RealConnection.java:299)
at okhttp3.internal.connection.RealConnection.establishProtocol(RealConnection.java:268)
at okhttp3.internal.connection.RealConnection.connect(RealConnection.java:160)
at okhttp3.internal.connection.StreamAllocation.findConnection(StreamAllocation.java:256)
at okhttp3.internal.connection.StreamAllocation.findHealthyConnection(StreamAllocation.java:134)
at okhttp3.internal.connection.StreamAllocation.newStream(StreamAllocation.java:113)
at okhttp3.internal.connection.ConnectInterceptor.intercept(ConnectInterceptor.java:42)
at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:147)
at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:121)
at okhttp3.internal.cache.CacheInterceptor.intercept(CacheInterceptor.java:93)
at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:147)
at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:121)
at okhttp3.internal.http.BridgeInterceptor.intercept(BridgeInterceptor.java:93)
at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:147)
at okhttp3.internal.http.RetryAndFollowUpInterceptor.intercept(RetryAndFollowUpInterceptor.java:125)
at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:147)
at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:121)
at okhttp3.RealCall.getResponseWithInterceptorChain(RealCall.java:200)
at okhttp3.RealCall.execute(RealCall.java:77)
at com.google.firebase.perf.network.FirebasePerfOkHttpClient.execute(Unknown Source)
at retrofit2.OkHttpCall.execute(OkHttpCall.java:180)
at retrofit2.adapter.rxjava.CallExecuteOnSubscribe.call(CallExecuteOnSubscribe.java:40)
at retrofit2.adapter.rxjava.CallExecuteOnSubscribe.call(CallExecuteOnSubscribe.java:24)
at retrofit2.adapter.rxjava.BodyOnSubscribe.call(BodyOnSubscribe.java:36)
at retrofit2.adapter.rxjava.BodyOnSubscribe.call(BodyOnSubscribe.java:28)
at rx.Observable.unsafeSubscribe(Observable.java:10256)
at rx.internal.operators.OnSubscribeMap.call(OnSubscribeMap.java:48)
at rx.internal.operators.OnSubscribeMap.call(OnSubscribeMap.java:33)
at rx.Observable.unsafeSubscribe(Observable.java:10256)
at rx.internal.operators.OnSubscribeDoOnEach.call(OnSubscribeDoOnEach.java:41)
at rx.internal.operators.OnSubscribeDoOnEach.call(OnSubscribeDoOnEach.java:30)
at rx.Observable.unsafeSubscribe(Observable.java:10256)
at rx.internal.operators.OnSubscribeMap.call(OnSubscribeMap.java:48)
at rx.internal.operators.OnSubscribeMap.call(OnSubscribeMap.java:33)
at rx.Observable.unsafeSubscribe(Observable.java:10256)
at rx.internal.operators.OperatorMerge$MergeSubscriber.onNext(OperatorMerge.java:248)
at rx.internal.operators.OperatorMerge$MergeSubscriber.onNext(OperatorMerge.java:148)
at rx.internal.operators.OnSubscribeMap$MapSubscriber.onNext(OnSubscribeMap.java:77)
at rx.internal.operators.OnSubscribeSwitchIfEmpty$ParentSubscriber.onNext(OnSubscribeSwitchIfEmpty.java:121)
at rx.internal.operators.OnSubscribeMap$MapSubscriber.onNext(OnSubscribeMap.java:77)
at rx.internal.util.ScalarSynchronousObservable$WeakSingleProducer.request(ScalarSynchronousObservable.java:276)
at rx.internal.producers.ProducerArbiter.setProducer(ProducerArbiter.java:126)
at rx.internal.operators.OnSubscribeSwitchIfEmpty$ParentSubscriber.setProducer(OnSubscribeSwitchIfEmpty.java:76)
at rx.internal.operators.OnSubscribeMap$MapSubscriber.setProducer(OnSubscribeMap.java:102)
at rx.internal.util.ScalarSynchronousObservable$JustOnSubscribe.call(ScalarSynchronousObservable.java:138)
at rx.internal.util.ScalarSynchronousObservable$JustOnSubscribe.call(ScalarSynchronousObservable.java:129)
at rx.Observable.unsafeSubscribe(Observable.java:10256)
at rx.internal.operators.OnSubscribeMap.call(OnSubscribeMap.java:48)
at rx.internal.operators.OnSubscribeMap.call(OnSubscribeMap.java:33)
at rx.Observable.unsafeSubscribe(Observable.java:10256)
at rx.internal.operators.OnSubscribeSwitchIfEmpty$ParentSubscriber.subscribe(OnSubscribeSwitchIfEmpty.java:104)
at rx.internal.operators.OnSubscribeSwitchIfEmpty.call(OnSubscribeSwitchIfEmpty.java:52)
at rx.internal.operators.OnSubscribeSwitchIfEmpty.call(OnSubscribeSwitchIfEmpty.java:31)
at rx.Observable.unsafeSubscribe(Observable.java:10256)
at rx.internal.operators.OnSubscribeMap.call(OnSubscribeMap.java:48)
at rx.internal.operators.OnSubscribeMap.call(OnSubscribeMap.java:33)
at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:48)
at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:30)
at rx.Observable.unsafeSubscribe(Observable.java:10256)
at rx.internal.operators.OnSubscribeSwitchIfEmpty$ParentSubscriber.subscribe(OnSubscribeSwitchIfEmpty.java:101)
at rx.internal.operators.OnSubscribeSwitchIfEmpty.call(OnSubscribeSwitchIfEmpty.java:52)
at rx.internal.operators.OnSubscribeSwitchIfEmpty.call(OnSubscribeSwitchIfEmpty.java:31)
at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:48)
at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:30)
at rx.Observable.unsafeSubscribe(Observable.java:10256)
at rx.internal.operators.OnSubscribeDoOnEach.call(OnSubscribeDoOnEach.java:41)
at rx.internal.operators.OnSubscribeDoOnEach.call(OnSubscribeDoOnEach.java:30)
at rx.Observable.unsafeSubscribe(Observable.java:10256)
at rx.internal.operators.OnSubscribeDoOnEach.call(OnSubscribeDoOnEach.java:41)
at rx.internal.operators.OnSubscribeDoOnEach.call(OnSubscribeDoOnEach.java:30)
at rx.Observable.unsafeSubscribe(Observable.java:10256)
at rx.internal.operators.OnSubscribeFilter.call(OnSubscribeFilter.java:45)
at rx.internal.operators.OnSubscribeFilter.call(OnSubscribeFilter.java:30)
at rx.Observable.unsafeSubscribe(Observable.java:10256)
at rx.internal.operators.OnSubscribeMap.call(OnSubscribeMap.java:48)
at rx.internal.operators.OnSubscribeMap.call(OnSubscribeMap.java:33)
at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:48)
at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:30)
at rx.Observable.unsafeSubscribe(Observable.java:10256)
at rx.internal.operators.OperatorSubscribeOn$SubscribeOnSubscriber.call(OperatorSubscribeOn.java:100)
at rx.internal.schedulers.ScheduledAction.run(ScheduledAction.java:55)
at rx.internal.schedulers.ExecutorScheduler$ExecutorSchedulerWorker.run(ExecutorScheduler.java:107)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607)
at java.lang.Thread.run(Thread.java:762)

#0. Crashed: ConnectivityManager: 0 0 0x0000000000000000
at pl.aaa.aaa.NonFatalCrashLog.log(NonFatalCrashLog.java:16)
at pl.aaa.aaa.view.fragment.aaaListFragment$1.onNext(aaaListFragment.java:136)
at pl.aaa.aaa.view.fragment.aaaListFragment$1.onNext(aaaListFragment.java:131)
at rx.observers.SafeSubscriber.onNext(SafeSubscriber.java:134)
at rx.internal.operators.OnSubscribeFilter$FilterSubscriber.onNext(OnSubscribeFilter.java:76)
at rx.internal.operators.OperatorSubscribeOn$SubscribeOnSubscriber.onNext(OperatorSubscribeOn.java:74)
at rx.internal.operators.OperatorDistinctUntilChanged$1.onNext(OperatorDistinctUntilChanged.java:96)
at rx.observers.SerializedObserver.onNext(SerializedObserver.java:91)
at rx.observers.SerializedSubscriber.onNext(SerializedSubscriber.java:94)
at rx.internal.operators.OnSubscribeConcatMap$ConcatMapSubscriber.innerNext(OnSubscribeConcatMap.java:182)
at rx.internal.operators.OnSubscribeConcatMap$ConcatMapInnerSubscriber.onNext(OnSubscribeConcatMap.java:335)
at rx.observers.Subscribers$5.onNext(Subscribers.java:235)
at com.github.pwittchen.reactivenetwork.library.network.observing.strategy.LollipopNetworkObservingStrategy$3.onAvailable(LollipopNetworkObservingStrategy.java:58)
at android.net.ConnectivityManager$CallbackHandler.handleMessage(ConnectivityManager.java:3100)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:154)
at android.os.HandlerThread.run(HandlerThread.java:61)
`

Thank you for help
Grzegorz

@originx
Copy link
Author

originx commented Nov 28, 2017

I cannot put my finger on it but this happens somewhere inbetween switching from mobile data to Wifi, mostly on Wifi, could it be that connection pool somehow gets crazy but tbh I think this is vendor specific

@originx
Copy link
Author

originx commented Dec 11, 2017

fixed with samsung update
G950FXXU1AQK7/G950FOXM1AQ7/G950FXXU1AQK7

@originx originx closed this as completed Dec 11, 2017
@talbz
Copy link

talbz commented Jan 2, 2018

I am having this issue, using Galaxy S8 with G950FXXU1AQK7/G950FOXM1AQ7/G950FXXU1AQK7

Anyone solved it?

@iamthevoid
Copy link

Sometimes doengrade of okhhtp helps - from 3.9.0 to 3.4.6. But after dongading i met it again and solve it like this (add a line in okHttpClient):

okClient = new OkHttpClient.Builder()
.followSslRedirects(true)
.connectTimeout(30, TimeUnit.SECONDS)
.addInterceptor(logging)
.build();

@hulixia1992
Copy link

I am having this issue ,using vivo Y75,Anyone solved it ?

@ertrzyiks
Copy link

I had a very similar problem with my app on Samsung S8 https://stackoverflow.com/questions/57701810/failed-to-connect-when-device-is-disconnected-from-pc/57734913#57734913

Turned out I had battery saving option Restrict background data enabled and that prevented my app from reaching the internet. I experienced both failed to connect and SSL handshake timeout errors and they are gone once I disabled this option.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

6 participants