Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(32)

Issue 743713002: Cronet Fix Channel Write after Close when request is canceled after success. (Closed)

Created:
6 years, 1 month ago by mef
Modified:
6 years ago
CC:
chromium-reviews, cbentzel+watch_chromium.org
Base URL:
https://chromium.googlesource.com/chromium/src.git@master
Project:
chromium
Visibility:
Public.

Description

Cronet Fix Channel Write after Close when request is canceled after success. Refactor URLRequestAdapter::Read to fix unbound buffer growth and data corruption in case of synchronous success. BUG=433348 Committed: https://crrev.com/3e826cf4020a888da25f41d5fb574fa0100c5bae Cr-Commit-Position: refs/heads/master@{#308283}

Patch Set 1 #

Patch Set 2 : Sync #

Patch Set 3 : Use IOBufferWithSize, update canceled_ on network thread. #

Patch Set 4 : Self review. #

Total comments: 8

Patch Set 5 : Split out change to net::IOBufferWithSize. #

Total comments: 22

Patch Set 6 : Sync #

Patch Set 7 : Address Matt's comments. #

Total comments: 2

Patch Set 8 : Sync #

Patch Set 9 : Address Matt's comments. #

Total comments: 19

Patch Set 10 : Added UrlRequestMockDataJob and tests that use it. #

Total comments: 40

Patch Set 11 : Sync #

Patch Set 12 : Address Matt's comments. #

Total comments: 35

Patch Set 13 : Sync and address Matt's comments. #

Total comments: 4

Patch Set 14 : Sync #

Patch Set 15 : Adddress Matt's comments. #

Patch Set 16 : Fix compilation error. #

Patch Set 17 : Fix Windows linker error. #

Unified diffs Side-by-side diffs Delta from patch set Stats (+433 lines, -81 lines) Patch
M components/cronet/android/chromium_url_request.cc View 1 2 3 4 5 6 1 chunk +2 lines, -2 lines 0 comments Download
M components/cronet/android/test/javatests/src/org/chromium/cronet_test_apk/MockUrlRequestJobTest.java View 1 2 3 4 5 6 7 8 9 10 11 12 2 chunks +119 lines, -0 lines 0 comments Download
M components/cronet/android/test/javatests/src/org/chromium/cronet_test_apk/TestHttpUrlRequestListener.java View 1 2 3 4 5 6 7 8 9 10 11 12 3 chunks +12 lines, -3 lines 0 comments Download
M components/cronet/android/test/mock_url_request_job_factory.cc View 1 2 3 4 5 6 7 8 9 10 11 12 3 chunks +12 lines, -0 lines 0 comments Download
M components/cronet/android/test/src/org/chromium/cronet_test_apk/MockUrlRequestJobFactory.java View 1 2 3 4 5 6 7 8 9 10 11 12 1 chunk +14 lines, -0 lines 0 comments Download
M components/cronet/android/url_request_adapter.h View 1 2 3 4 5 6 7 8 9 10 11 12 5 chunks +7 lines, -9 lines 0 comments Download
M components/cronet/android/url_request_adapter.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 6 chunks +38 lines, -67 lines 0 comments Download
M net/BUILD.gn View 1 2 3 4 5 6 7 8 9 10 11 12 13 1 chunk +2 lines, -0 lines 0 comments Download
M net/net.gyp View 1 2 3 4 5 6 7 8 9 10 11 12 13 1 chunk +2 lines, -0 lines 0 comments Download
A net/test/url_request/url_request_mock_data_job.h View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 1 chunk +60 lines, -0 lines 0 comments Download
A net/test/url_request/url_request_mock_data_job.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 1 chunk +165 lines, -0 lines 0 comments Download

Messages

Total messages: 38 (2 generated)
mef
Please take a look. I've reworked a bit of URLRequestAdapter to fix channel write after ...
6 years ago (2014-11-25 20:38:51 UTC) #2
miloslav
Nice! Looks much cleaner this way. https://codereview.chromium.org/743713002/diff/60001/components/cronet/android/test/javatests/src/org/chromium/cronet_test_apk/CronetUrlTest.java File components/cronet/android/test/javatests/src/org/chromium/cronet_test_apk/CronetUrlTest.java (right): https://codereview.chromium.org/743713002/diff/60001/components/cronet/android/test/javatests/src/org/chromium/cronet_test_apk/CronetUrlTest.java#newcode254 components/cronet/android/test/javatests/src/org/chromium/cronet_test_apk/CronetUrlTest.java:254: static class TestByteChannel ...
6 years ago (2014-11-26 10:44:36 UTC) #3
mef
https://codereview.chromium.org/743713002/diff/60001/components/cronet/android/test/javatests/src/org/chromium/cronet_test_apk/CronetUrlTest.java File components/cronet/android/test/javatests/src/org/chromium/cronet_test_apk/CronetUrlTest.java (right): https://codereview.chromium.org/743713002/diff/60001/components/cronet/android/test/javatests/src/org/chromium/cronet_test_apk/CronetUrlTest.java#newcode254 components/cronet/android/test/javatests/src/org/chromium/cronet_test_apk/CronetUrlTest.java:254: static class TestByteChannel extends ChunkedWritableByteChannel { On 2014/11/26 10:44:35, ...
6 years ago (2014-11-26 14:06:21 UTC) #4
mmenke
This really should be two CLs, one for each fixed issue. https://codereview.chromium.org/743713002/diff/60001/components/cronet/android/url_request_adapter.cc File components/cronet/android/url_request_adapter.cc (right): ...
6 years ago (2014-11-26 14:07:43 UTC) #5
mef
Matt, I hear you about 2 separate CLs, but I'm not sure how to split. ...
6 years ago (2014-11-26 14:14:28 UTC) #6
mmenke
About splitting the CL: Per your description, you're doing two things here: Replacing GrowableIOBuffer with ...
6 years ago (2014-11-26 14:34:14 UTC) #7
mef
On 2014/11/26 14:34:14, mmenke wrote: > About splitting the CL: Per your description, you're doing ...
6 years ago (2014-11-26 14:43:21 UTC) #8
mmenke
On 2014/11/26 14:43:21, mef wrote: > On 2014/11/26 14:34:14, mmenke wrote: > > About splitting ...
6 years ago (2014-11-26 14:53:25 UTC) #9
mmenke
On 2014/11/26 14:53:25, mmenke wrote: > On 2014/11/26 14:43:21, mef wrote: > > On 2014/11/26 ...
6 years ago (2014-11-26 14:54:19 UTC) #10
mef
Matt, PTAL, I've split out change to net::IOBufferWithSize into separate CL.
6 years ago (2014-12-01 16:16:58 UTC) #11
mmenke
https://codereview.chromium.org/743713002/diff/80001/components/cronet/android/test/javatests/src/org/chromium/cronet_test_apk/CronetUrlTest.java File components/cronet/android/test/javatests/src/org/chromium/cronet_test_apk/CronetUrlTest.java (right): https://codereview.chromium.org/743713002/diff/80001/components/cronet/android/test/javatests/src/org/chromium/cronet_test_apk/CronetUrlTest.java#newcode305 components/cronet/android/test/javatests/src/org/chromium/cronet_test_apk/CronetUrlTest.java:305: Executors.newCachedThreadPool().execute(cancelTask); Any reason not to just cancel on the ...
6 years ago (2014-12-02 17:10:24 UTC) #12
mmenke
https://codereview.chromium.org/743713002/diff/80001/components/cronet/android/url_request_adapter.cc File components/cronet/android/url_request_adapter.cc (right): https://codereview.chromium.org/743713002/diff/80001/components/cronet/android/url_request_adapter.cc#newcode260 components/cronet/android/url_request_adapter.cc:260: Read(); Recommend against tail recursion here. Ideally should be ...
6 years ago (2014-12-02 18:15:12 UTC) #13
mef
Thanks, PTAL. https://codereview.chromium.org/743713002/diff/80001/components/cronet/android/test/javatests/src/org/chromium/cronet_test_apk/CronetUrlTest.java File components/cronet/android/test/javatests/src/org/chromium/cronet_test_apk/CronetUrlTest.java (right): https://codereview.chromium.org/743713002/diff/80001/components/cronet/android/test/javatests/src/org/chromium/cronet_test_apk/CronetUrlTest.java#newcode305 components/cronet/android/test/javatests/src/org/chromium/cronet_test_apk/CronetUrlTest.java:305: Executors.newCachedThreadPool().execute(cancelTask); On 2014/12/02 17:10:24, mmenke wrote: > ...
6 years ago (2014-12-02 19:41:40 UTC) #14
mmenke
2 responses, one all-new bonus comment! https://codereview.chromium.org/743713002/diff/80001/components/cronet/android/url_request_adapter.cc File components/cronet/android/url_request_adapter.cc (right): https://codereview.chromium.org/743713002/diff/80001/components/cronet/android/url_request_adapter.cc#newcode260 components/cronet/android/url_request_adapter.cc:260: Read(); On 2014/12/02 ...
6 years ago (2014-12-02 20:33:47 UTC) #15
xunjieli
I'd appreciate a slightly more detailed CL description, eg what the problem is and how ...
6 years ago (2014-12-02 20:52:33 UTC) #16
mmenke
On 2014/12/02 20:52:33, xunjieli wrote: > I'd appreciate a slightly more detailed CL description, eg ...
6 years ago (2014-12-03 16:40:33 UTC) #17
mef
On 2014/12/03 16:40:33, mmenke wrote: > On 2014/12/02 20:52:33, xunjieli wrote: > > I'd appreciate ...
6 years ago (2014-12-03 16:43:11 UTC) #18
mmenke
On 2014/12/03 16:43:11, mef wrote: > On 2014/12/03 16:40:33, mmenke wrote: > > On 2014/12/02 ...
6 years ago (2014-12-03 16:49:17 UTC) #19
mef
Matt, thanks! I've addressed your comments and will work on reproducing the issue. I think ...
6 years ago (2014-12-03 20:29:54 UTC) #20
mmenke
On 2014/12/03 20:29:54, mef wrote: > Matt, > > thanks! I've addressed your comments and ...
6 years ago (2014-12-03 21:40:55 UTC) #21
xunjieli
+1 for enabling/disabling cache on per request basis. https://codereview.chromium.org/743713002/diff/160001/components/cronet/android/test/javatests/src/org/chromium/cronet_test_apk/CronetUrlTest.java File components/cronet/android/test/javatests/src/org/chromium/cronet_test_apk/CronetUrlTest.java (right): https://codereview.chromium.org/743713002/diff/160001/components/cronet/android/test/javatests/src/org/chromium/cronet_test_apk/CronetUrlTest.java#newcode253 components/cronet/android/test/javatests/src/org/chromium/cronet_test_apk/CronetUrlTest.java:253: static ...
6 years ago (2014-12-04 15:21:56 UTC) #22
mmenke
https://codereview.chromium.org/743713002/diff/160001/components/cronet/android/url_request_adapter.cc File components/cronet/android/url_request_adapter.cc (right): https://codereview.chromium.org/743713002/diff/160001/components/cronet/android/url_request_adapter.cc#newcode25 components/cronet/android/url_request_adapter.cc:25: static const size_t kBufferSizeIncrement = 32768; No longer incrementing. ...
6 years ago (2014-12-04 20:57:29 UTC) #23
mef
Thanks, PTAL. I've added the URLRequestMockDataJob and tests that use it to synchronously received the ...
6 years ago (2014-12-05 23:25:07 UTC) #24
mmenke
Haven't had time to do a full pass today https://codereview.chromium.org/743713002/diff/180001/net/test/url_request/url_request_mock_data_job.cc File net/test/url_request/url_request_mock_data_job.cc (right): https://codereview.chromium.org/743713002/diff/180001/net/test/url_request/url_request_mock_data_job.cc#newcode1 net/test/url_request/url_request_mock_data_job.cc:1: ...
6 years ago (2014-12-09 21:00:04 UTC) #25
mef
Thanks! https://codereview.chromium.org/743713002/diff/180001/net/test/url_request/url_request_mock_data_job.cc File net/test/url_request/url_request_mock_data_job.cc (right): https://codereview.chromium.org/743713002/diff/180001/net/test/url_request/url_request_mock_data_job.cc#newcode1 net/test/url_request/url_request_mock_data_job.cc:1: // Copyright (c) 2012 The Chromium Authors. All ...
6 years ago (2014-12-09 22:21:00 UTC) #26
mmenke
Just minor suggestions. Last pass should be fast. https://codereview.chromium.org/743713002/diff/220001/components/cronet/android/test/javatests/src/org/chromium/cronet_test_apk/MockUrlRequestJobTest.java File components/cronet/android/test/javatests/src/org/chromium/cronet_test_apk/MockUrlRequestJobTest.java (right): https://codereview.chromium.org/743713002/diff/220001/components/cronet/android/test/javatests/src/org/chromium/cronet_test_apk/MockUrlRequestJobTest.java#newcode148 components/cronet/android/test/javatests/src/org/chromium/cronet_test_apk/MockUrlRequestJobTest.java:148: assertTrue(isOpen()); ...
6 years ago (2014-12-10 20:59:15 UTC) #27
mef
Thanks! https://codereview.chromium.org/743713002/diff/220001/components/cronet/android/test/javatests/src/org/chromium/cronet_test_apk/MockUrlRequestJobTest.java File components/cronet/android/test/javatests/src/org/chromium/cronet_test_apk/MockUrlRequestJobTest.java (right): https://codereview.chromium.org/743713002/diff/220001/components/cronet/android/test/javatests/src/org/chromium/cronet_test_apk/MockUrlRequestJobTest.java#newcode148 components/cronet/android/test/javatests/src/org/chromium/cronet_test_apk/MockUrlRequestJobTest.java:148: assertTrue(isOpen()); On 2014/12/10 20:59:14, mmenke wrote: > Should ...
6 years ago (2014-12-10 23:23:36 UTC) #28
mmenke
quick responses https://codereview.chromium.org/743713002/diff/220001/components/cronet/android/test/javatests/src/org/chromium/cronet_test_apk/MockUrlRequestJobTest.java File components/cronet/android/test/javatests/src/org/chromium/cronet_test_apk/MockUrlRequestJobTest.java (right): https://codereview.chromium.org/743713002/diff/220001/components/cronet/android/test/javatests/src/org/chromium/cronet_test_apk/MockUrlRequestJobTest.java#newcode150 components/cronet/android/test/javatests/src/org/chromium/cronet_test_apk/MockUrlRequestJobTest.java:150: mRequestToCancelOnWrite.cancel(); On 2014/12/10 23:23:35, mef wrote: > ...
6 years ago (2014-12-11 01:09:19 UTC) #29
mmenke
https://codereview.chromium.org/743713002/diff/240001/components/cronet/android/url_request_adapter.cc File components/cronet/android/url_request_adapter.cc (right): https://codereview.chromium.org/743713002/diff/240001/components/cronet/android/url_request_adapter.cc#newcode181 components/cronet/android/url_request_adapter.cc:181: return; See earlier comment about this not happening - ...
6 years ago (2014-12-11 20:04:38 UTC) #30
mef
Oops, forgot those two, sorry about that. PTAL. https://codereview.chromium.org/743713002/diff/240001/components/cronet/android/url_request_adapter.cc File components/cronet/android/url_request_adapter.cc (right): https://codereview.chromium.org/743713002/diff/240001/components/cronet/android/url_request_adapter.cc#newcode181 components/cronet/android/url_request_adapter.cc:181: return; ...
6 years ago (2014-12-12 19:47:53 UTC) #31
mmenke
LGTM!
6 years ago (2014-12-12 21:58:24 UTC) #32
mef
Thanks!
6 years ago (2014-12-12 21:59:02 UTC) #33
xunjieli
On 2014/12/12 21:59:02, mef wrote: > Thanks! Didn't find any obvious nits. Feel free to ...
6 years ago (2014-12-12 22:00:39 UTC) #34
commit-bot: I haz the power
CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/patch-status/743713002/320001
6 years ago (2014-12-13 17:42:10 UTC) #36
commit-bot: I haz the power
Committed patchset #17 (id:320001)
6 years ago (2014-12-13 18:40:47 UTC) #37
commit-bot: I haz the power
6 years ago (2014-12-13 18:41:39 UTC) #38
Message was sent while issue was closed.
Patchset 17 (id:??) landed as
https://crrev.com/3e826cf4020a888da25f41d5fb574fa0100c5bae
Cr-Commit-Position: refs/heads/master@{#308283}

Powered by Google App Engine
This is Rietveld 408576698