Chromium Code Reviews| Index: components/cronet/android/java/src/org/chromium/net/urlconnection/CronetHttpURLConnection.java |
| diff --git a/components/cronet/android/java/src/org/chromium/net/urlconnection/CronetHttpURLConnection.java b/components/cronet/android/java/src/org/chromium/net/urlconnection/CronetHttpURLConnection.java |
| index 41b0fc7b967f41ba0bff8b38e01cb2e2d69946ae..df2545a26cfbf1bf763ff61cd675e4e23bc45e43 100644 |
| --- a/components/cronet/android/java/src/org/chromium/net/urlconnection/CronetHttpURLConnection.java |
| +++ b/components/cronet/android/java/src/org/chromium/net/urlconnection/CronetHttpURLConnection.java |
| @@ -73,13 +73,7 @@ public class CronetHttpURLConnection extends HttpURLConnection { |
| @Override |
| public void disconnect() { |
| // Disconnect before connection is made should have no effect. |
| - if (connected && mInputStream != null) { |
| - try { |
| - mInputStream.close(); |
| - } catch (IOException e) { |
| - e.printStackTrace(); |
| - } |
| - mInputStream = null; |
| + if (connected) { |
| mRequest.cancel(); |
|
pauljensen
2015/11/18 13:15:05
This seems racy. We cancel on this thread but the
xunjieli
2015/11/18 21:14:07
This is probably unavoidable. This HttpURLConnecti
pauljensen
2015/11/19 04:51:08
Can we make disconnect() call mMessageLoop.loop()
xunjieli
2015/12/02 15:20:03
I assume you meant mMessageLoop.quit(). I don't th
pauljensen
2015/12/02 16:21:52
No, I meant loop(). We know onCanceled() or some
xunjieli
2015/12/02 23:49:27
I don't think we should call loop here. That might
pauljensen
2015/12/03 04:04:27
I really think we need to do something here. This
|
| } |
| } |
| @@ -455,13 +449,13 @@ public class CronetHttpURLConnection extends HttpURLConnection { |
| } |
| mResponseInfo = info; |
| mRequest.cancel(); |
| - setResponseDataCompleted(); |
| + setResponseDataCompleted(null); |
| } |
| @Override |
| public void onSucceeded(UrlRequest request, UrlResponseInfo info) { |
| mResponseInfo = info; |
| - setResponseDataCompleted(); |
| + setResponseDataCompleted(null); |
| } |
| @Override |
| @@ -473,16 +467,24 @@ public class CronetHttpURLConnection extends HttpURLConnection { |
| } |
| mResponseInfo = info; |
| mException = exception; |
| - setResponseDataCompleted(); |
| + setResponseDataCompleted(mException); |
| + } |
| + |
| + @Override |
| + public void onCanceled(UrlRequest request, UrlResponseInfo info) { |
| + mResponseInfo = info; |
| + setResponseDataCompleted(new IOException("stream closed")); |
| } |
| /** |
| * Notifies {@link #mInputStream} that transferring of response data has |
| * completed. |
| + * @param exception if not {@code null}, it is the exception to report when |
| + * caller tries to read more data. |
| */ |
| - private void setResponseDataCompleted() { |
| + private void setResponseDataCompleted(IOException exception) { |
| if (mInputStream != null) { |
| - mInputStream.setResponseDataCompleted(); |
| + mInputStream.setResponseDataCompleted(exception); |
| } |
| mMessageLoop.quit(); |
| } |