ClientSocketPoolBaseHelper crash fix: add a self-reference.
BUG=49254

Review URL: http://codereview.chromium.org/3127035

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@57529 0039d316-1c4b-4281-b951-d872f2087c98
diff --git a/net/socket/client_socket_pool_base.cc b/net/socket/client_socket_pool_base.cc
index 70358d1..631ef5e 100644
--- a/net/socket/client_socket_pool_base.cc
+++ b/net/socket/client_socket_pool_base.cc
@@ -583,6 +583,12 @@
 
   BoundNetLog job_log = job->net_log();
 
+  // ConnectJobs may hold references to pools which may hold references back to
+  // this pool, so RemoveConnectJob() may eventually lead to something calling
+  // Release() on |this| which deletes it in the middle of this function.  Hold
+  // a self-reference to prevent deletion of |this|.
+  const scoped_refptr<ClientSocketPoolBaseHelper> self(this);
+
   if (result == OK) {
     DCHECK(socket.get());
     RemoveConnectJob(job, group);