Titanium JIRA Archive
Titanium SDK/CLI (TIMOB)

[TIMOB-20036] Android: HttpClient.abort() on andorid throw errors if the request is just created

GitHub Issuen/a
TypeBug
PriorityMedium
StatusClosed
ResolutionFixed
Resolution Date2016-02-16T06:33:41.000+0000
Affected Version/sRelease 5.0.2
Fix Version/sRelease 5.2.0
ComponentsAndroid
Labelshttpclient, httpclient.abort, module_network, qe-manualtest, qe-testadded
Reportercarlo
AssigneeHieu Pham
Created2015-10-15T15:37:30.000+0000
Updated2016-02-16T06:33:47.000+0000

Description

If I try to cancel a just created HttpClient request (eg on a input onchange search), I got the below errors. With SDK 3.4.1 I got this error: {noformat} [ERROR] : TiHttpClient: (TiHttpClient-3) [0,4790] HTTP Error (java.lang.IllegalStateException): Connection pool shut down. [ERROR] : TiHttpClient: java.lang.IllegalStateException: Connection pool shut down. [ERROR] : TiHttpClient: at org.apache.http.impl.conn.tsccm.ConnPoolByRoute.getEntryBlocking(ConnPoolByRoute.java:289) [ERROR] : TiHttpClient: at org.apache.http.impl.conn.tsccm.ConnPoolByRoute$1.getPoolEntry(ConnPoolByRoute.java:243) [ERROR] : TiHttpClient: at org.apache.http.impl.conn.tsccm.ThreadSafeClientConnManager$1.getConnection(ThreadSafeClientConnManager.java:181) [ERROR] : TiHttpClient: at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:331) [ERROR] : TiHttpClient: at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:560) [ERROR] : TiHttpClient: at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:658) [ERROR] : TiHttpClient: at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:642) [ERROR] : TiHttpClient: at ti.modules.titanium.network.TiHTTPClient$ClientRunnable.run(TiHTTPClient.java:1341) [ERROR] : TiHttpClient: at java.lang.Thread.run(Thread.java:818) {noformat} With SDK 5.0.0 instead: {noformat} [ERROR] : TiHttpClient: (TiHttpClient-7) [0,9478] HTTP Error (java.lang.NullPointerException): Attempt to invoke interface method 'int org.apache.http.StatusLine.getStatusCode()' on a null object reference [ERROR] : TiHttpClient: java.lang.NullPointerException: Attempt to invoke interface method 'int org.apache.http.StatusLine.getStatusCode()' on a null object reference [ERROR] : TiHttpClient: at ti.modules.titanium.network.TiHTTPClient$ClientRunnable.run(TiHTTPClient.java:1354) [ERROR] : TiHttpClient: at java.lang.Thread.run(Thread.java:818) {noformat} I'm pretty sure this don't happen with 3.1 or 3.2 but I can't test it at the moment. Test apps here: https://www.dropbox.com/sh/g7a7n9emtu36fzc/AADrFBNZ8UthezDd0vmKGjM1a?dl=0 Test code:
var win = Titanium.UI.createWindow({layout:'vertical', height:Titanium.UI.FILL, backgroundColor:"#FFF"});


var button = Titanium.UI.createButton({top:50,title:"create new request and cancel it after 50ms (will often throw error on logcat)"});
button.addEventListener('click', function(){
	var n = Ti.Network.createHTTPClient();
	n.open("GET", "http://www.google.com");
	n.send();
	setInterval(function(){
		n.abort();
	},50);
});
win.add(button);

win.open();

Comments

  1. Hieu Pham 2015-12-08

    master PR: https://github.com/appcelerator/titanium_mobile/pull/7559
  2. Ashraf Abu 2015-12-09

    PR merged.
  3. Lokesh Choudhary 2016-01-19

    Verified the fix. No errors seen on httpClient.abort(). Closing. Environment: Appc Studio : 4.5.0.201601131150 Ti SDK : 5.2.0.v20160114021251 Ti CLI : 5.0.5 Alloy : 1.7.26 MAC Yosemite : 10.10.5 Appc NPM : 4.2.2 Appc CLI : 5.1.0 Node: v0.12.27 Nexus 6P - Android 6.0 One Plus One - Android 5.1.1

JSON Source