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

Issue 364943002: Makes waiting SSLConnectJobs use the message loops to resume their connection. (Closed)

Created:
6 years, 5 months ago by mshelley
Modified:
6 years, 4 months ago
Reviewers:
wtc, Ryan Sleevi, mmenke
CC:
chromium-reviews, cbentzel+watch_chromium.org
Base URL:
https://chromium.googlesource.com/chromium/src.git@master
Project:
chromium
Visibility:
Public.

Description

This CL changes SSLConnectJobMessenger to post a task to the IO message loop when resuming an SSLConnectJob's connection, instead of directly running the SSLConnectJob's resumption callback. This will ensure that a resumed connection never makes a call back into a deleted messenger.

Patch Set 1 : #

Total comments: 8

Patch Set 2 : Changed messenger's handling of failed jobs, and switched to use ThreadTaskRunnerHandle #

Total comments: 8

Patch Set 3 : Added documentation and fixed assignment order. #

Total comments: 4

Patch Set 4 : Moved documentation and switched to use a temp var of the task_runner. #

Total comments: 10

Patch Set 5 : Moved documentation and made some methods private. #

Total comments: 16

Patch Set 6 : Changed OnSocketFailure callback to run directly & fixed comments. #

Total comments: 23

Patch Set 7 : Changed handling of on JobFailed. #

Total comments: 6

Patch Set 8 : Fixed use after free bug & other cl comments. #

Total comments: 8

Patch Set 9 : Deleted unnessecary headers and removed unneeded declaration. #

Patch Set 10 : Rebase #

Total comments: 2
Unified diffs Side-by-side diffs Delta from patch set Stats (+12 lines, -3 lines) Patch
M net/socket/ssl_client_socket_pool.h View 1 2 3 4 5 6 7 8 9 2 chunks +4 lines, -0 lines 0 comments Download
M net/socket/ssl_client_socket_pool.cc View 1 2 3 4 5 6 7 8 9 4 chunks +8 lines, -3 lines 2 comments Download

Messages

Total messages: 37 (0 generated)
mshelley
6 years, 5 months ago (2014-07-08 01:22:55 UTC) #1
wtc
Patch set 1 LGTM. Please check all the changes to make sure it is still ...
6 years, 5 months ago (2014-07-08 17:37:03 UTC) #2
Ryan Sleevi
https://codereview.chromium.org/364943002/diff/20001/net/socket/ssl_client_socket_pool.cc File net/socket/ssl_client_socket_pool.cc (right): https://codereview.chromium.org/364943002/diff/20001/net/socket/ssl_client_socket_pool.cc#newcode138 net/socket/ssl_client_socket_pool.cc:138: base::MessageLoopForIO::current()->PostTask(FROM_HERE, cb); On 2014/07/08 17:37:03, wtc wrote: > > ...
6 years, 5 months ago (2014-07-08 19:36:53 UTC) #3
Ryan Sleevi
Sorry, to be explicit: Not LGTM for now, because I think the scenario I described ...
6 years, 5 months ago (2014-07-08 19:37:24 UTC) #4
mshelley
https://codereview.chromium.org/364943002/diff/20001/net/socket/ssl_client_socket_openssl.cc File net/socket/ssl_client_socket_openssl.cc (right): https://codereview.chromium.org/364943002/diff/20001/net/socket/ssl_client_socket_openssl.cc#newcode396 net/socket/ssl_client_socket_openssl.cc:396: base::MessageLoopForIO::current()->PostTask(FROM_HERE, error_callback_); On 2014/07/08 17:37:03, wtc wrote: > > ...
6 years, 5 months ago (2014-07-09 21:53:07 UTC) #5
Ryan Sleevi
https://codereview.chromium.org/364943002/diff/20001/net/socket/ssl_client_socket_openssl.cc File net/socket/ssl_client_socket_openssl.cc (right): https://codereview.chromium.org/364943002/diff/20001/net/socket/ssl_client_socket_openssl.cc#newcode396 net/socket/ssl_client_socket_openssl.cc:396: base::MessageLoopForIO::current()->PostTask(FROM_HERE, error_callback_); On 2014/07/09 21:53:06, mshelley wrote: > On ...
6 years, 5 months ago (2014-07-09 22:40:38 UTC) #6
mshelley
On 2014/07/09 22:40:38, Ryan Sleevi wrote: > https://codereview.chromium.org/364943002/diff/20001/net/socket/ssl_client_socket_openssl.cc > File net/socket/ssl_client_socket_openssl.cc (right): > > https://codereview.chromium.org/364943002/diff/20001/net/socket/ssl_client_socket_openssl.cc#newcode396 ...
6 years, 5 months ago (2014-07-09 23:34:54 UTC) #7
Ryan Sleevi
On 2014/07/09 23:34:54, mshelley wrote: > Oh ok I see. So no, I would not ...
6 years, 5 months ago (2014-07-09 23:47:10 UTC) #8
Ryan Sleevi
6 years, 5 months ago (2014-07-09 23:47:15 UTC) #9
mshelley
6 years, 5 months ago (2014-07-09 23:49:20 UTC) #10
Ryan Sleevi
https://codereview.chromium.org/364943002/diff/40001/net/socket/ssl_client_socket_pool.cc File net/socket/ssl_client_socket_pool.cc (right): https://codereview.chromium.org/364943002/diff/40001/net/socket/ssl_client_socket_pool.cc#newcode116 net/socket/ssl_client_socket_pool.cc:116: &SSLConnectJobMessenger::OnJobSucceeded, weak_factory_.GetWeakPtr())); It would be good to document why ...
6 years, 5 months ago (2014-07-10 00:03:22 UTC) #11
mshelley
On 2014/07/09 23:47:10, Ryan Sleevi wrote: > On 2014/07/09 23:34:54, mshelley wrote: > > Oh ...
6 years, 5 months ago (2014-07-10 00:18:12 UTC) #12
Ryan Sleevi
On 2014/07/10 00:18:12, mshelley wrote: > Ok sorry I think I'm unintentionally running in circles ...
6 years, 5 months ago (2014-07-10 00:24:22 UTC) #13
mshelley
On 2014/07/10 00:24:22, Ryan Sleevi wrote: > On 2014/07/10 00:18:12, mshelley wrote: > > Ok ...
6 years, 5 months ago (2014-07-10 00:33:53 UTC) #14
mshelley
https://codereview.chromium.org/364943002/diff/40001/net/socket/ssl_client_socket_pool.cc File net/socket/ssl_client_socket_pool.cc (right): https://codereview.chromium.org/364943002/diff/40001/net/socket/ssl_client_socket_pool.cc#newcode116 net/socket/ssl_client_socket_pool.cc:116: &SSLConnectJobMessenger::OnJobSucceeded, weak_factory_.GetWeakPtr())); On 2014/07/10 00:03:22, Ryan Sleevi wrote: > ...
6 years, 5 months ago (2014-07-10 00:44:20 UTC) #15
Ryan Sleevi
https://codereview.chromium.org/364943002/diff/60001/net/socket/ssl_client_socket_openssl.cc File net/socket/ssl_client_socket_openssl.cc (right): https://codereview.chromium.org/364943002/diff/60001/net/socket/ssl_client_socket_openssl.cc#newcode398 net/socket/ssl_client_socket_openssl.cc:398: // SSLClientSocketOpenSSL at the callback's runtime. Note: The request ...
6 years, 5 months ago (2014-07-10 02:34:25 UTC) #16
mshelley
https://codereview.chromium.org/364943002/diff/60001/net/socket/ssl_client_socket_openssl.cc File net/socket/ssl_client_socket_openssl.cc (right): https://codereview.chromium.org/364943002/diff/60001/net/socket/ssl_client_socket_openssl.cc#newcode398 net/socket/ssl_client_socket_openssl.cc:398: // SSLClientSocketOpenSSL at the callback's runtime. On 2014/07/10 02:34:25, ...
6 years, 5 months ago (2014-07-10 16:35:32 UTC) #17
Ryan Sleevi
Several comments unrelated to this CL, but I only noticed them in particular when reviewing ...
6 years, 5 months ago (2014-07-10 20:30:45 UTC) #18
mshelley
Note: I fixed the comments that were unrelated to this CL in the branch that ...
6 years, 5 months ago (2014-07-10 22:49:59 UTC) #19
Ryan Sleevi
Ok, I'm going to re-examine the dependent CLs and then get back to this, but ...
6 years, 5 months ago (2014-07-11 01:25:59 UTC) #20
wtc
Review comments on patch set 5: I suggest some changes to reduce the amount of ...
6 years, 5 months ago (2014-07-11 18:55:51 UTC) #21
mshelley
https://codereview.chromium.org/364943002/diff/120001/net/socket/ssl_client_socket.h File net/socket/ssl_client_socket.h (right): https://codereview.chromium.org/364943002/diff/120001/net/socket/ssl_client_socket.h#newcode103 net/socket/ssl_client_socket.h:103: // This callback should be run regardless of whether ...
6 years, 5 months ago (2014-07-14 20:30:07 UTC) #22
wtc
Review comments on patch set 6: https://codereview.chromium.org/364943002/diff/140001/net/socket/ssl_client_socket.h File net/socket/ssl_client_socket.h (right): https://codereview.chromium.org/364943002/diff/140001/net/socket/ssl_client_socket.h#newcode104 net/socket/ssl_client_socket.h:104: // been disconnected ...
6 years, 5 months ago (2014-07-14 22:39:19 UTC) #23
wtc
Additional comments on patch set 6: https://codereview.chromium.org/364943002/diff/140001/net/socket/ssl_client_socket_pool.cc File net/socket/ssl_client_socket_pool.cc (right): https://codereview.chromium.org/364943002/diff/140001/net/socket/ssl_client_socket_pool.cc#newcode156 net/socket/ssl_client_socket_pool.cc:156: callback.Run(); I believe ...
6 years, 5 months ago (2014-07-14 23:57:31 UTC) #24
Ryan Sleevi
https://codereview.chromium.org/364943002/diff/140001/net/socket/ssl_client_socket_pool.cc File net/socket/ssl_client_socket_pool.cc (right): https://codereview.chromium.org/364943002/diff/140001/net/socket/ssl_client_socket_pool.cc#newcode138 net/socket/ssl_client_socket_pool.cc:138: base::ThreadTaskRunnerHandle::Get()->PostTask(FROM_HERE, callback); On 2014/07/14 22:39:18, wtc wrote: > > ...
6 years, 5 months ago (2014-07-15 00:48:11 UTC) #25
wtc
https://codereview.chromium.org/364943002/diff/140001/net/socket/ssl_client_socket_pool.cc File net/socket/ssl_client_socket_pool.cc (right): https://codereview.chromium.org/364943002/diff/140001/net/socket/ssl_client_socket_pool.cc#newcode138 net/socket/ssl_client_socket_pool.cc:138: base::ThreadTaskRunnerHandle::Get()->PostTask(FROM_HERE, callback); Ryan and I discussed this in person. ...
6 years, 5 months ago (2014-07-15 21:27:09 UTC) #26
wtc
https://codereview.chromium.org/364943002/diff/140001/net/socket/ssl_client_socket_pool.cc File net/socket/ssl_client_socket_pool.cc (right): https://codereview.chromium.org/364943002/diff/140001/net/socket/ssl_client_socket_pool.cc#newcode138 net/socket/ssl_client_socket_pool.cc:138: base::ThreadTaskRunnerHandle::Get()->PostTask(FROM_HERE, callback); The purpose of the PostTask should be ...
6 years, 5 months ago (2014-07-16 21:48:13 UTC) #27
Ryan Sleevi
https://codereview.chromium.org/364943002/diff/140001/net/socket/ssl_client_socket_pool.cc File net/socket/ssl_client_socket_pool.cc (right): https://codereview.chromium.org/364943002/diff/140001/net/socket/ssl_client_socket_pool.cc#newcode162 net/socket/ssl_client_socket_pool.cc:162: base::ThreadTaskRunnerHandle::Get(); Use a SequencedTaskRunner here instead. Or just TaskRunner. ...
6 years, 5 months ago (2014-07-16 21:54:43 UTC) #28
mshelley
https://codereview.chromium.org/364943002/diff/140001/net/socket/ssl_client_socket.h File net/socket/ssl_client_socket.h (right): https://codereview.chromium.org/364943002/diff/140001/net/socket/ssl_client_socket.h#newcode104 net/socket/ssl_client_socket.h:104: // been disconnected or deleted. On 2014/07/14 22:39:18, wtc ...
6 years, 5 months ago (2014-07-17 16:28:04 UTC) #29
wtc
https://codereview.chromium.org/364943002/diff/140001/net/socket/ssl_client_socket_pool.cc File net/socket/ssl_client_socket_pool.cc (right): https://codereview.chromium.org/364943002/diff/140001/net/socket/ssl_client_socket_pool.cc#newcode167 net/socket/ssl_client_socket_pool.cc:167: task_runner->PostTask(FROM_HERE, it->callback); On 2014/07/17 16:28:03, mshelley wrote: > > ...
6 years, 5 months ago (2014-07-18 01:31:57 UTC) #30
Ryan Sleevi
https://codereview.chromium.org/364943002/diff/160001/net/socket/ssl_client_socket_pool.cc File net/socket/ssl_client_socket_pool.cc (right): https://codereview.chromium.org/364943002/diff/160001/net/socket/ssl_client_socket_pool.cc#newcode134 net/socket/ssl_client_socket_pool.cc:134: // SSLConnectJobMessenger should become invalid before they're run. Probably ...
6 years, 5 months ago (2014-07-18 23:08:35 UTC) #31
mshelley
https://codereview.chromium.org/364943002/diff/160001/net/socket/ssl_client_socket_pool.cc File net/socket/ssl_client_socket_pool.cc (right): https://codereview.chromium.org/364943002/diff/160001/net/socket/ssl_client_socket_pool.cc#newcode134 net/socket/ssl_client_socket_pool.cc:134: // SSLConnectJobMessenger should become invalid before they're run. On ...
6 years, 5 months ago (2014-07-21 23:08:29 UTC) #32
mmenke
https://codereview.chromium.org/364943002/diff/180001/net/socket/ssl_client_socket.h File net/socket/ssl_client_socket.h (right): https://codereview.chromium.org/364943002/diff/180001/net/socket/ssl_client_socket.h#newcode108 net/socket/ssl_client_socket.h:108: virtual void OnSocketFailure() = 0; Don't believe this belongs ...
6 years, 5 months ago (2014-07-22 18:06:32 UTC) #33
mshelley
https://codereview.chromium.org/364943002/diff/180001/net/socket/ssl_client_socket.h File net/socket/ssl_client_socket.h (right): https://codereview.chromium.org/364943002/diff/180001/net/socket/ssl_client_socket.h#newcode108 net/socket/ssl_client_socket.h:108: virtual void OnSocketFailure() = 0; On 2014/07/22 18:06:32, mmenke ...
6 years, 5 months ago (2014-07-23 22:09:08 UTC) #34
Ryan Sleevi
I think this LGTM, but see the comments on the CL this is based on ...
6 years, 5 months ago (2014-07-25 21:31:44 UTC) #35
wtc
Review comments on patch set 10: Since the CL has gone through several revisions, please ...
6 years, 4 months ago (2014-08-05 00:44:57 UTC) #36
Ryan Sleevi
6 years, 4 months ago (2014-08-06 02:15:50 UTC) #37
https://codereview.chromium.org/364943002/diff/220001/net/socket/ssl_client_s...
File net/socket/ssl_client_socket_pool.cc (right):

https://codereview.chromium.org/364943002/diff/220001/net/socket/ssl_client_s...
net/socket/ssl_client_socket_pool.cc:151: task_runner->PostTask(FROM_HERE,
it->callback);
On 2014/08/05 00:44:57, wtc wrote:
> 
> 1. I think running the callbacks directly is safe and improves performance.
But
> I won't block this change.
> 
> We don't call SetHandshakeCompletionCallback on any of these pending sockets,
so
> the callbacks won't call the SSLConnectJobMessenger. Therefore, the "somewhat
> recursive call sequence" you mentioned in the CL's description should not
occur.

I don't think this is entirely true. Any one of these callbacks could create a
new SSLSocket, which would potentially fall back into this messenger. Any number
of side-effects could occur.

Now, whether or not they do in this CL is irrelevant, I think - it's more about
making sure the API contract is consistent.

> 
> 2. Please add a comment to explain why it is necessary or useful to post tasks
> to run the callbacks later.

Powered by Google App Engine
This is Rietveld 408576698