From 56d48bd9ecd2d0f08625259121312531064a09f2 Mon Sep 17 00:00:00 2001 From: Jacky Wijaya Date: Wed, 2 May 2018 18:49:17 -0700 Subject: [PATCH] Fix Android, DevServerHelper from calling okhttp3 response.body.string() twice Summary: Fixing from call response.body.string() twice in DevServerHelper.java. https://github.com/square/okhttp/issues/1240#issuecomment-68142603 I'm getting error like this ``` 05-01 21:16:47.080 22836-23064/com.my.company.bundle E/AndroidRuntime: FATAL EXCEPTION: OkHttp Dispatcher Process: com.my.company.bundle, PID: 22836 java.lang.IllegalStateException: closed at okio.RealBufferedSource.rangeEquals(RealBufferedSource.java:398) at okio.RealBufferedSource.rangeEquals(RealBufferedSource.java:392) at okhttp3.internal.c.a(Util.java:449) at okhttp3.v.string(ResponseBody.java:174) at com.facebook.react.devsupport.f$8.onResponse(DevServerHelper.java:487) at com.newrelic.agent.android.instrumentation.okhttp3.CallbackExtension.onResponse(CallbackExtension.java:41) at okhttp3.s$a.c(RealCall.java:153) at okhttp3.internal.b.run(NamedRunnable.java:32) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1162) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:636) at java.lang.Thread.run(Thread.java:764) ``` - In my case, My device is using a Proxy, and tried to connect the packager. When it failed from connecting packager through websocket, It crash by this line of code. [ANDROID] [BUGFIX] [DevServerHelper] - fixing from calling body.string() twice. Closes https://github.com/facebook/react-native/pull/19088 Differential Revision: D7853822 Pulled By: mdvacca fbshipit-source-id: c11a73ce2fa6d40b0a7bd8bc0fca7b07c6bc27ed --- .../java/com/facebook/react/devsupport/DevServerHelper.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevServerHelper.java b/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevServerHelper.java index 09d87f28088001..946377680e6922 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevServerHelper.java +++ b/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevServerHelper.java @@ -479,10 +479,11 @@ public void onResponse(Call call, Response response) throws IOException { callback.onPackagerStatusFetched(false); return; } - if (!PACKAGER_OK_STATUS.equals(body.string())) { + String bodyString = body.string(); // cannot call body.string() twice, stored it into variable. https://github.com/square/okhttp/issues/1240#issuecomment-68142603 + if (!PACKAGER_OK_STATUS.equals(bodyString)) { FLog.e( ReactConstants.TAG, - "Got unexpected response from packager when requesting status: " + body.string()); + "Got unexpected response from packager when requesting status: " + bodyString); callback.onPackagerStatusFetched(false); return; }