summaryrefslogtreecommitdiffstats
path: root/net/socket/tcp_client_socket_pool_unittest.cc
Commit message (Collapse)AuthorAgeFilesLines
* Move platform_thread to base/threading and put in the base namespace. I left abrettw@chromium.org2010-12-311-4/+6
| | | | | | | | | | | stub and "using" declarations in the old location to avoid having to change the entire project at once. TEST=it compiles BUG=none Review URL: http://codereview.chromium.org/6001010 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@70342 0039d316-1c4b-4281-b951-d872f2087c98
* Cache certificate verification results in memory.wtc@google.com2010-12-161-1/+2
| | | | | | | | | R=agl BUG=63357 TEST=none Review URL: http://codereview.chromium.org/5386001 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@69414 0039d316-1c4b-4281-b951-d872f2087c98
* Revert "Revert "net: Plumb DnsCertProvenanceChecker around.""agl@chromium.org2010-11-221-1/+1
| | | | | | (See r66623 for details.) git-svn-id: svn://svn.chromium.org/chrome/trunk/src@66985 0039d316-1c4b-4281-b951-d872f2087c98
* Revert "net: Plumb DnsCertProvenanceChecker around."agl@chromium.org2010-11-221-1/+1
| | | | | | This reverts commit r66970. git-svn-id: svn://svn.chromium.org/chrome/trunk/src@66974 0039d316-1c4b-4281-b951-d872f2087c98
* net: Plumb DnsCertProvenanceChecker around.agl@chromium.org2010-11-221-1/+1
| | | | | | (Reland of r66623, reverted in r66687 due to Chrome Frame linking issues.) git-svn-id: svn://svn.chromium.org/chrome/trunk/src@66970 0039d316-1c4b-4281-b951-d872f2087c98
* Revert "net: Plumb DnsCertProvenanceChecker around."agl@chromium.org2010-11-181-1/+1
| | | | | | | This reverts commit r66623. Some how it causes libnspr4.dll to be linked in Chrome Frame builds. git-svn-id: svn://svn.chromium.org/chrome/trunk/src@66687 0039d316-1c4b-4281-b951-d872f2087c98
* net: Plumb DnsCertProvenanceChecker around.agl@chromium.org2010-11-181-1/+1
| | | | | | | | | | | | | | | | | | | | | | | DnsCertProvenanceChecker is introduced to abstract away the action of uploading reports. It's implemented by ChromeDnsCertProvenanceChecker which lives in a scoped_ptr off of a URLRequestContext. It's only active on the main context (i.e. not in incognito mode). This might change in the future, but it's a nice, conservative choice for the moment. The DnsCertProvenanceChecker is plumbed all the way to SSLClientSocket (via HttpCache) where it replaces the DnsRRResolver. Above SSLClientSocket, it's plumbed in addition to the DnsRRResolver because the later will end up going into SSLHostInfo in the future. At the moment, ChromeDnsCertProvenanceCheckerContext is just a skeleton to avoid putting too much real code in a plumbing job. BUG=none TEST=none git-svn-id: svn://svn.chromium.org/chrome/trunk/src@66623 0039d316-1c4b-4281-b951-d872f2087c98
* Correctly handle SSL Client Authentication requests when connectingrch@chromium.org2010-11-121-1/+1
| | | | | | | | | | | to an HTTPS/SPDY proxy. Modify SSLClientSocket classes to correctly set the host_and_port field of the cert_request_info. Modify HttpNetworkTransaction to use this field when populating the SSL client auth cache. BUG=59292 TEST=HttpProxyClientSocketPoolTest.SslClientAuth Review URL: http://codereview.chromium.org/4339001 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@65976 0039d316-1c4b-4281-b951-d872f2087c98
* net: add certificate provenance checking.agl@chromium.org2010-11-041-1/+2
| | | | | | | | | BUG=none TEST=none http://codereview.chromium.org/4448001 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@65116 0039d316-1c4b-4281-b951-d872f2087c98
* Convert implicit scoped_refptr constructor calls to explicit ones, part 1thakis@chromium.org2010-11-011-8/+8
| | | | | | | | | | | This CL was created automatically by this clang rewriter: http://codereview.appspot.com/2776043/ . I manually fixed a few rough spots of the rewriter output (doh1-3) and fixed all presubmit errors. BUG=28083 TEST=None Review URL: http://codereview.chromium.org/4192012 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@64573 0039d316-1c4b-4281-b951-d872f2087c98
* Add experimental option for TCP FastOpen.mbelshe@chromium.org2010-10-261-0/+3
| | | | | | | | | | | Use chrome.exe --enable-tcp-fastopen BUG=none TEST=none yet Review URL: http://codereview.chromium.org/4039003 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@63913 0039d316-1c4b-4281-b951-d872f2087c98
* net: move SSL host info serialisation into SSLHostInfoagl@chromium.org2010-10-201-0/+1
| | | | | | | | | | | | | | | | | This is a prelude to SSLHostInfo being able to kick off certificate validation based on predicted certificates. In order for that to happen, SSLHostInfo has to be able to parse the contents of the saved data, therefore the serialisation/deserialisation is moved into SSLHostInfo and we use a protocol buffer to clean things up. TEST=net_unittests BUG=none Review URL: http://codereview.chromium.org/3915001 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@63221 0039d316-1c4b-4281-b951-d872f2087c98
* Revert revert 62918 - net: clean up SSLHostInfo construction."agl@chromium.org2010-10-191-1/+3
| | | | | | | Was reverted in r62922 due to a change landing between the try run and the commit. git-svn-id: svn://svn.chromium.org/chrome/trunk/src@63046 0039d316-1c4b-4281-b951-d872f2087c98
* Revert 62918 - net: clean up SSLHostInfo construction.agl@chromium.org2010-10-181-3/+1
| | | | | | | | | | | | | | | | Create an SSLHostInfoFactory interface and plumb it from the HttpCache to the SSLConnectJob. Also, move the SSLHostInfo reference from the ssl_config to being passed to the SSLClientSocket. BUG=none TEST=net_unittests Review URL: http://codereview.chromium.org/3747003 TBR=agl@chromium.org Review URL: http://codereview.chromium.org/3846005 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@62922 0039d316-1c4b-4281-b951-d872f2087c98
* net: clean up SSLHostInfo construction.agl@chromium.org2010-10-181-1/+3
| | | | | | | | | | | | | Create an SSLHostInfoFactory interface and plumb it from the HttpCache to the SSLConnectJob. Also, move the SSLHostInfo reference from the ssl_config to being passed to the SSLClientSocket. BUG=none TEST=net_unittests Review URL: http://codereview.chromium.org/3747003 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@62918 0039d316-1c4b-4281-b951-d872f2087c98
* Stop refcounting HostResolver.willchan@chromium.org2010-10-011-2/+2
| | | | | | | | | BUG=46049 TEST=none Review URL: http://codereview.chromium.org/3601002 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@61256 0039d316-1c4b-4281-b951-d872f2087c98
* Stop refcounting ClientSocketPool.willchan@chromium.org2010-09-291-100/+106
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Establishes that HttpNetworkSession owns all the socket pools. Move out all the socket pools into a ClientSocketPoolManager. This is because of the dependency tree amongst socket pools, which dictates the order in which they must be constructed and destructed. In order to better establish it, I moved them out to their own class. HttpNetworkSession owns the ClientSocketPoolManager which owns the pools. We pass the pools as raw pointers everywhere. Note that ClientSocketPoolManager owns more pools than are publicly accessible via its interface. That's because some of them are wrapped by publicly exposed pools. Also, ClientSocketPoolHistograms used to be reference counted. That's because it can be shared by multiple ClientSocketPools. But it's effectively a global as well, so I make their lifetimes persist for the length of ClientSocketPoolManager too. I also removed internal refcounting in ClientSocketPoolBase. I had refcounted it before I knew about ScopedRunnableMethodFactory back when I first started. I cleaned up the unit tests a lot. Back when I was a young padawan, I didn't really know what I was doing, so I copy/pasted a metric asston of code. Turns out most of it was stupid, so I fixed it. I also stopped the use of implementation inheritance with ClientSocketPoolTest because it's discouraged by the style guide and more importantly because it caused the ClientSocketHandles within the TestSocketRequest vector to be destroyed _after_ the pools themselves were destroyed, which is bad since the handles will call pool_->Release() which blows up. BUG=56215,56215 TEST=Existing unit tests Review URL: http://codereview.chromium.org/3389020 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@60983 0039d316-1c4b-4281-b951-d872f2087c98
* Fix ClientSocketHandle reuse_type(). Correctly track socket use.willchan@chromium.org2010-09-021-0/+3
| | | | | | | | | | | | | In particular, we used to consider that a socket had been used whenever it got returned to the ClientSocketPool. But, with preconnect, that is no longer true. Luckily, we now have UseHistory in the transport sockets. So, I create a WasEverUsed() method in ClientSocket, plumb this into all sockets, and use that in ClientSocketPoolBaseHelper instead of tracking whether or not the socket had been returned to the client or not. This ultimately will have two implications. We will record the correct values in Net.HttpSocketType histograms and we will use the correct timeout for preconnect sockets in ClientSocketPoolBaseHelper::CleanupIdleSockets(). BUG=none TEST=none Review URL: http://codereview.chromium.org/3353004 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@58363 0039d316-1c4b-4281-b951-d872f2087c98
* Gather preconnection use vs waste statisticsjar@chromium.org2010-08-251-0/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | I now gather statistics only in the transport socket classes TcpClientSocket*. All other socket classes forward significant data (that they are used in a speculation) to their transport class, where this data is stored, and then dumped when the TCP socket is closed. This CL also repaired a slight miscount in bytes read and written on Windows, as error codes were mistakenly accumulated as byte counts. This CL repaired a significant undercounting in linux/mac via StatsCounter (the logging counter appears correct). Libjingle support is minimal (NOTREACHED), but I don't know that there are subresources that will be speculatively preconnected from that class (and it is less obvious how the class uses underlying sockets, if at all). BUG=42694 r=willchan Review URL: http://codereview.chromium.org/3163033 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@57377 0039d316-1c4b-4281-b951-d872f2087c98
* In about:net-internals, each SOCKET created by a CONNECT_JOB holds a ↵mmenke@chromium.org2010-08-251-2/+4
| | | | | | | | | | | reference to the CONNECT_JOB that spawned it. BUG=47082 TEST=manual Review URL: http://codereview.chromium.org/3164005 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@57339 0039d316-1c4b-4281-b951-d872f2087c98
* Implement SSLClientSocketPool.vandebo@chromium.org2010-07-141-1/+1
| | | | | | | | | | | | To support SSLClientSocketPool, ClientSocketPoolBase and ClientSocketHandle require a notion of additional error state reported from the pool. Overtime the error handling may get become more integrated, alleviating the need for some of the additional error state. To support getting Http Proxy credentials from the user, the SSLClientSocketPool will release unauthenticated HttpProxyClientSocket's into the pool as idle. However, it checks their authentication status when receiving one, completing the authentication once the user has provided the credentials. BUG=30357 TEST=existing unit tests, ClientSocketPoolBaseTest.AdditionalErrorState*, SSLClientSocketPoolTest.* Review URL: http://codereview.chromium.org/2870030 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@52275 0039d316-1c4b-4281-b951-d872f2087c98
* Make the various SocketParams reference counted.vandebo@chromium.org2010-07-121-48/+42
| | | | | | | | | | | This is so that the SSLSocketParam can hold one of any of the existing SocketParams. BUG=30357 TEST=existing unit tests Review URL: http://codereview.chromium.org/2848029 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@52107 0039d316-1c4b-4281-b951-d872f2087c98
* Attempt to fix flakey test.mbelshe@chromium.org2010-07-111-3/+8
| | | | | | | | | BUG=43919 TEST=N/A Review URL: http://codereview.chromium.org/2908006 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@52066 0039d316-1c4b-4281-b951-d872f2087c98
* Disable BackupSocketConnect unittest.cbentzel@chromium.org2010-07-071-1/+2
| | | | | | | | | BUG=43919 TEST=net_unittests Review URL: http://codereview.chromium.org/2810051 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@51706 0039d316-1c4b-4281-b951-d872f2087c98
* Massively simplify the NetworkChangeNotifier infrastructure:pkasting@chromium.org2010-06-251-11/+5
| | | | | | | | | | | | | | * Use a process-wide object (singleton pattern) * Create/destroy this object on the main thread, make it outlive all consumers * Make observer-related functions threadsafe As a result, the notifier can now be used by any thread (eliminating things like NetworkChangeObserverProxy and NetworkChangeNotifierProxy, and expanding its usefulness); its creation and inner workings are much simplified (eliminating implementation-specific classes); and it is simpler to access (eliminating things like NetworkChangeNotifierThread and a LOT of passing pointers around). BUG=none TEST=Unittests; network changes still trigger notifications Review URL: http://codereview.chromium.org/2802015 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@50895 0039d316-1c4b-4281-b951-d872f2087c98
* Rework the logging for sockets/connectjobs.eroman@chromium.org2010-06-031-1/+3
| | | | | | | | | | | | | | | | | | In particular, make it work better when using backup jobs / late binding (the display was very confused before because of how these asynchronous events would nest). Also changed the paradigm for how PassiveLogCollector preserves these async associations -- this fixes how it replays the events to net-internals. (Before we would collapse the event streams into the SOURCE_URL_REQUEST which lost some hiearchy.. now I keep the separate streams). Some of the particular changes to the event streams: * ConnectJobs now create their own source stream internally. * Sockets are now bounded by +SOCKET_ALIVE / -SOCKET_ALIVE events (removed the one-off SOCKET_DONE event). * The socket log streams contains +SOCKET_IN_USE / -SOCKET_IN_USE event blocks to show which URLRequest was controlling it at various points in time (this makes it much easier to understand which read/writes belonged to a particular network transaction when a socket gets re-used). * ConnectJobs are bounded by +SOCKET_POOL_CONNECT_JOB / - SOCKET_POOL_CONNECT_JOB events. * ConnectJobs log the net error they failed with. * Removed the SOCKET_BACKUP_TIMER_EXTENDED event. Review URL: http://codereview.chromium.org/2363003 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@48797 0039d316-1c4b-4281-b951-d872f2087c98
* Make ClientSocketPool histograms static so that they work properly.vandebo@chromium.org2010-05-201-2/+5
| | | | | | | | | | | | Also change their names so that they appear all together on the histograms page. BUG=43375 TEST=none Review URL: http://codereview.chromium.org/2029004 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@47843 0039d316-1c4b-4281-b951-d872f2087c98
* Revert r47395. Looks like it still crashes =/willchan@chromium.org2010-05-201-2/+33
| | | | | | | | BUG=40455,40457 Review URL: http://codereview.chromium.org/2104013 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@47753 0039d316-1c4b-4281-b951-d872f2087c98
* Prevent crash in test case where tests could overflow the index to the list ofmbelshe@chromium.org2010-05-191-6/+12
| | | | | | | | | | | | | | test socket types to create. The backup sockets fire at ~250ms. So, if the test takes longer than expected, it will end up creating more sockets than the test case expects, and we could overflow this list. We may need to do more work to make it so this never happens, but this will prevent the crash. BUG=43919 TEST=TCPClientSocketPoolTest.BackupSocketConnect Review URL: http://codereview.chromium.org/2072006 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@47669 0039d316-1c4b-4281-b951-d872f2087c98
* This is roughly a reland of r43908, although I had to rewrite a fair chunk ↵willchan@chromium.org2010-05-171-33/+2
| | | | | | | | | | since code's changed a lot. I've changed it so as not to flush the host resolver too. I suspect there might have been a bug there. I was unable to reproduce the crash here on network change, so I think either that fixed it or something else changed under the hood. In any case, I want to reland this and see if anyone encounters any problems with it. BUG=40455,40457 Review URL: http://codereview.chromium.org/2114004 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@47395 0039d316-1c4b-4281-b951-d872f2087c98
* Reland 46757.willchan@chromium.org2010-05-101-0/+7
| | | | | | | | | OnAvailableSocketSlot() was dereferencing a NULL pointer. Add a NULL check. Add a test. BUG=42267 Review URL: http://codereview.chromium.org/2050005 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@46837 0039d316-1c4b-4281-b951-d872f2087c98
* Revert 46757 - Fix IO thread hang on releasing a socket.sky@chromium.org2010-05-081-7/+0
| | | | | | | | | | | | | The problem was we assumed ProcessPendingRequest() would always make progress once the group's releasing socket went down to zero. However, in OnAvailableSocketSlot(), since the top stalled group might still have a releasing socket, it won't necessarily make progress. The algorithmic solution is to simply never do any socket slot processing in DoReleaseSocket() if there are any releasing sockets. This requires us to search for any stalled groups after releasing sockets gets back down to 0, so it requires the full group scan each time num_releasing_sockets goes back to 0. There is a performance hit here, but I think a linear search through 256~ groups in the worst case is ok. TODO(willchan): evaluate the perf hit and consider adding a secondary data structure to improve the stalled group search. BUG=42267 Review URL: http://codereview.chromium.org/2013009 TBR=willchan@chromium.org Review URL: http://codereview.chromium.org/1992010 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@46792 0039d316-1c4b-4281-b951-d872f2087c98
* Fix IO thread hang on releasing a socket.willchan@chromium.org2010-05-071-0/+7
| | | | | | | | | | The problem was we assumed ProcessPendingRequest() would always make progress once the group's releasing socket went down to zero. However, in OnAvailableSocketSlot(), since the top stalled group might still have a releasing socket, it won't necessarily make progress. The algorithmic solution is to simply never do any socket slot processing in DoReleaseSocket() if there are any releasing sockets. This requires us to search for any stalled groups after releasing sockets gets back down to 0, so it requires the full group scan each time num_releasing_sockets goes back to 0. There is a performance hit here, but I think a linear search through 256~ groups in the worst case is ok. TODO(willchan): evaluate the perf hit and consider adding a secondary data structure to improve the stalled group search. BUG=42267 Review URL: http://codereview.chromium.org/2013009 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@46757 0039d316-1c4b-4281-b951-d872f2087c98
* Implement a 15 connection per proxy server limit.willchan@chromium.org2010-04-291-2/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | Previously, we had a limit of 6 connections per proxy server, which was horrifically low. Connections to all endpoint hosts remains at 6. Basically, we have a map of socket pools, keyed by the proxy server. Each of these proxy socket pools has a socket limit of 15 and a connection limit per host of 6. The main TCP socket pool (non-proxied) has the standard 256 socket limit, and connection limit per host of 6. There are two maps currently, one for HTTP proxies and one for SOCKS proxies. Note that SSL tunnels over HTTP CONNECTs are still located within the standard http proxy socket pools. We depend on the fact that our code never returns a non-SSL connected socket to the pool for a |connection_group| that is to a HTTPS endpoint. A newly connected socket from the pool will only have the TCP connection done. An idle socket will have both the TCP and the HTTP CONNECT and the SSL handshake done for it. TODO(willchan): Remove the extra constructor overload for the old deprecated parameters. Switch to using HostPortPair everywhere. TODO(willchan): Finish SSL socket pools. TODO(willchan): Rip out the DoInitConnection() code so it can be shared by other caller (TCP pre-warming!). TODO(willchan): Flush out the socket pool maps when the proxy configuration changes. TODO(willchan): Fix up global socket limits. They're slightly broken in this case, since each pool instance has its own "global" limit, so obviously different pools don't share the same "global" limit. This is such a minor deal since the global limits are so small for proxy servers compared to the system global limits (256 vs 15), that it doesn't have a big effect. TODO(willchan): Drink moar b33r. BUG=12066 Review URL: http://codereview.chromium.org/1808001 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@45896 0039d316-1c4b-4281-b951-d872f2087c98
* Cleanup: Remove the implicit constructor for BoundNetLog that allowed ↵eroman@chromium.org2010-04-281-16/+24
| | | | | | | | | passing NULL in place of a const BoundNetLog&. BUG=37421 Review URL: http://codereview.chromium.org/1783008 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@45851 0039d316-1c4b-4281-b951-d872f2087c98
* Add net log entries that summarize transmit and receive byte counts.vandebo@chromium.org2010-04-231-4/+19
| | | | | | | | | | | | | | | | | | | | | Tx/Rx summaries are integrated into the net log at the last point that bytes were transmitted or received. Hopefully this will help resolve http://crbug.com/37729 by showing if we've received bytes over the network when we hit the "Waiting for cache" bug. This change also modernizes the use of NetLog: - ClientSocket now has a net_log() accessor - ClientSocket::Connect no longer takes a NetLog, instead the TCPClientSocket constructor takes one, others use their transport socket's NetLog - TCPClientSocket creates a new source id with source type SOCKET Also updates PassiveLogCollector infrastructure: - The LiveRequestsObserver lets a RequestTracker update a RequestInfo just before it is displayed. This allows ConnectJobs to be associated with URLRequests while connecting and then reassociated if they are late-bound to a different request. BUG=37729 TEST=tx/rx lines show up in chrome://net-internals/ Review URL: http://codereview.chromium.org/1696005 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@45449 0039d316-1c4b-4281-b951-d872f2087c98
* Fix crash on IP address change.willchan@chromium.org2010-04-191-1/+30
| | | | | | | | | | Revert r43908: "Flush socket pools and SPDY session pool properly on explicit requests and network changes." This change was reverted on the 375 branch, but not on trunk. BUG=41190 Review URL: http://codereview.chromium.org/1604045 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@44973 0039d316-1c4b-4281-b951-d872f2087c98
* Flush socket pools and SPDY session pool properly on explicit requests and ↵willchan@chromium.org2010-04-081-30/+1
| | | | | | | | | | network changes. BUG=40455,40457 Review URL: http://codereview.chromium.org/1615005 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@43908 0039d316-1c4b-4281-b951-d872f2087c98
* Fix to bug 39063.mbelshe@chromium.org2010-03-241-0/+92
| | | | | | | | | | | | The problem was the backup connect job was failed; and we didn't properly track the backup_job in the group jobs list. BUG=39063 TEST=TCPClientSocketPoolTest.BackupConnectFail Review URL: http://codereview.chromium.org/1262001 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@42440 0039d316-1c4b-4281-b951-d872f2087c98
* Implement SOCKSClientSocketPoolvandebo@chromium.org2010-03-221-23/+16
| | | | | | | | | | | | | | This is the first layered pool, so there are several infrastructure changes in this change as well. Add a ConnectionTimeout method to pools so that layered pools can timeout each phase. Add a name method to pools to support per pool UMA histograms. Change SOCKS sockets to take a ClientSocketHandle instead of a ClientSocket BUG=30357 (blocks an SSL Pool) TEST=existing unit tests Review URL: http://codereview.chromium.org/668097 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@42231 0039d316-1c4b-4281-b951-d872f2087c98
* Generalize the net module's LoadLog facility from a passive container, to an ↵eroman@chromium.org2010-03-161-3/+3
| | | | | | | | | | | | | | | | event stream (NetLog). This makes it possible to associate a single NetLog with a URLRequestContext, and then attach observers to that log to watch the stream of events. This changelist attempts to do the most direct translation, so there will be subsequent iterations to clean up. The user-visible behavior should remain unchanged. BUG=37421 Review URL: http://codereview.chromium.org/848006 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@41689 0039d316-1c4b-4281-b951-d872f2087c98
* When connect takes too long for a new socket group, issue a singlembelshe@chromium.org2010-03-141-7/+138
| | | | | | | | | | | | backup socket request to retry the connect. This reduces latency in the presence of packet loss. BUG=36629 TEST=TCPClientSocketPoolTest.BackupSocket* Review URL: http://codereview.chromium.org/842004 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@41543 0039d316-1c4b-4281-b951-d872f2087c98
* Make a proper TCPSocketParamsvandebo@chromium.org2010-02-271-27/+26
| | | | | | | | | BUG=none TEST=existing unit tests Review URL: http://codereview.chromium.org/661194 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@40182 0039d316-1c4b-4281-b951-d872f2087c98
* Really connect to the same server in FTP network transaction.phajdan.jr@chromium.org2010-02-201-3/+3
| | | | | | | | | | | | Also create necessary infrastructure to know the address a client socket is connected to. TEST=Covered by net_unittests. BUG=35670 Review URL: http://codereview.chromium.org/598071 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@39559 0039d316-1c4b-4281-b951-d872f2087c98
* Pulled out Callback code into base/callback.h. This is the first step ↵akalin@chromium.org2010-02-191-0/+1
| | | | | | | | | | | | | towards redoing the Callback interfaces. Added and removed includes as needed. BUG=35223 TEST=trybots Review URL: http://codereview.chromium.org/646061 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@39419 0039d316-1c4b-4281-b951-d872f2087c98
* Pass the NetworkChangeNotifier to HostResolver.willchan@chromium.org2010-02-041-4/+3
| | | | | | | | | | | | | | | This requires the following refactors: (1) NetworkChangeNotifier moves out of HttpNetworkSession into IOThread. (2) HostResolver gets initialized with NetworkChangeNotifier. (3) NetworkChangeNotifier needs to get passed into HttpCache and HttpNetworkSession (required updating a lot of files). (4) NetworkChangeNotifier is no longer reference counted. It is owned by IOThread. (5) IOThread gains a new struct: Globals. It can only be used on the io thread. (6) ChromeURLRequestContextFactory uses IOThread::Globals to initialize ChromeURLRequest objects with the host resolver and network change notifier. BUG=26159 Review URL: http://codereview.chromium.org/552117 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@38052 0039d316-1c4b-4281-b951-d872f2087c98
* Switch on socket late binding - Take 2.willchan@chromium.org2010-01-271-0/+8
| | | | | | | | | | | | | | | Re-enable socket late binding. The mac valgrind errors happened due to threading bugs in test_shell_tests. The ui thread would TearDown() the test object, which deleted the TestURLRequestContext, which eventually deletes the TCPClientSocketPool, which deletes its ConnectJobs. However, those ConnectJobs might be running simultaneously on the io thread. Therefore, we have a race condition. This change fixes that. Histograms for the 4.0.266.0 dev channel release indicate the following changes for late binding: (a) Net.TCPSocketType shows a decrease (from 41.85% to 39.29%) in used of newly connected sockets. Part of this decrease is due to using previously used sockets more often (increase from 58.15% to 58.53%), but is primarily due to being able to use sockets that were connected, but not immediately handed over to a socket request (increased from 0 [not supported without late binding] to 2.18%). (b) Net.SocketIdleTimeBeforeNextUse_ReusedSocket indicates that reused sockets are getting used more quickly than before, with a decrease of mean idle time from 11.65 seconds to 11.34 seconds. (c) Net.Transaction_Connected_Under_10 indicates shows that the mean for time until the first byte of the transaction response decreased from 1585ms to 1481ms. The code change deletes the old non socket late binding code paths, cleaning up the code significantly. It also deletes duplicated tests in ClientSocketPoolBase which covered both pathways. A TCPClientSocketPool test had to be updated as well. BUG=http://crbug.com/30354. Review URL: http://codereview.chromium.org/549093 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@37311 0039d316-1c4b-4281-b951-d872f2087c98
* Turn GetPeerName into a pure virtual and provide local impls, this way any ↵thomasvl@chromium.org2010-01-201-0/+9
| | | | | | | | | | future bugs like the one referenced are compile time and not runtime so they won't wide waiting to be found. BUG=32595 TEST=everything builds and tests pass Review URL: http://codereview.chromium.org/552048 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@36629 0039d316-1c4b-4281-b951-d872f2087c98
* Revert 36230 - Switch on socket late binding.willchan@chromium.org2010-01-141-8/+0
| | | | | | | | | | | | | | | | | Broke mac valgrind for test_shell_tests. Various errors. I also missed fixing a bug that eroman pointed out in review. Total brainfart. Histograms for the 4.0.266.0 dev channel release indicate the following changes for late binding: (a) Net.TCPSocketType shows a decrease (from 41.85% to 39.29%) in used of newly connected sockets. Part of this decrease is due to using previously used sockets more often (increase from 58.15% to 58.53%), but is primarily due to being able to use sockets that were connected, but not immediately handed over to a socket request (increased from 0 [not supported without late binding] to 2.18%). (b) Net.SocketIdleTimeBeforeNextUse_ReusedSocket indicates that reused sockets are getting used more quickly than before, with a decrease of mean idle time from 11.65 seconds to 11.34 seconds. (c) Net.Transaction_Connected_Under_10 indicates shows that the mean for time until the first byte of the transaction response decreased from 1585ms to 1481ms. The code change deletes the old non socket late binding code paths, cleaning up the code significantly. It also deletes duplicated tests in ClientSocketPoolBase which covered both pathways. A TCPClientSocketPool test had to be updated as well. BUG=http://crbug.com/30354. Review URL: http://codereview.chromium.org/543051 TBR=willchan@chromium.org Review URL: http://codereview.chromium.org/549047 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@36231 0039d316-1c4b-4281-b951-d872f2087c98
* Switch on socket late binding.willchan@chromium.org2010-01-141-0/+8
| | | | | | | | | | | | | Histograms for the 4.0.266.0 dev channel release indicate the following changes for late binding: (a) Net.TCPSocketType shows a decrease (from 41.85% to 39.29%) in used of newly connected sockets. Part of this decrease is due to using previously used sockets more often (increase from 58.15% to 58.53%), but is primarily due to being able to use sockets that were connected, but not immediately handed over to a socket request (increased from 0 [not supported without late binding] to 2.18%). (b) Net.SocketIdleTimeBeforeNextUse_ReusedSocket indicates that reused sockets are getting used more quickly than before, with a decrease of mean idle time from 11.65 seconds to 11.34 seconds. (c) Net.Transaction_Connected_Under_10 indicates shows that the mean for time until the first byte of the transaction response decreased from 1585ms to 1481ms. The code change deletes the old non socket late binding code paths, cleaning up the code significantly. It also deletes duplicated tests in ClientSocketPoolBase which covered both pathways. A TCPClientSocketPool test had to be updated as well. BUG=http://crbug.com/30354. Review URL: http://codereview.chromium.org/543051 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@36230 0039d316-1c4b-4281-b951-d872f2087c98