From c6614f117f19a2c689e5e606adc10440fe75fb0a Mon Sep 17 00:00:00 2001 From: Rene Weber Date: Thu, 27 Apr 2017 12:10:23 -0700 Subject: [PATCH] Add explicit error message if e.getMessage is null Summary: In the NetworkingModule, if the http request failed, we send a `didCompleteNetworkResponse` event with the error message, which is used on JS side to determine if the request was erroring. Currently we get the error message from `e.getMessage()`, however, not all exceptions have a message and it might therefore return null and thus resulting in no error on JS side. This change checks if the message is null and if so uses a default message. In android send a request using XMLHttpRequest with a timeout set to a server that has a delay larger than the timeout (so we force the timeout to happen). ``` const request = new XMLHttpRequest(); request.open('GET', "http://localhost:3000/", true); request.timeout = 1000; request.ontimeout = () => { console.log('ontimeout'); }; request.send(); ``` See the timeout callback being called correctly. Fixes #11666 Closes https://github.com/facebook/react-native/pull/13407 Differential Revision: D4963764 Pulled By: hramos fbshipit-source-id: 61ffcef9e0594fe9bface24fdb8bde1e6eec3990 --- .../com/facebook/react/modules/network/NetworkingModule.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/ReactAndroid/src/main/java/com/facebook/react/modules/network/NetworkingModule.java b/ReactAndroid/src/main/java/com/facebook/react/modules/network/NetworkingModule.java index af64fc42a..d4b047994 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/modules/network/NetworkingModule.java +++ b/ReactAndroid/src/main/java/com/facebook/react/modules/network/NetworkingModule.java @@ -336,7 +336,10 @@ public final class NetworkingModule extends ReactContextBaseJavaModule { return; } removeRequest(requestId); - ResponseUtil.onRequestError(eventEmitter, requestId, e.getMessage(), e); + String errorMessage = e.getMessage() != null + ? e.getMessage() + : "Error while executing request: " + e.getClass().getSimpleName(); + ResponseUtil.onRequestError(eventEmitter, requestId, errorMessage, e); } @Override