summaryrefslogtreecommitdiffstats
path: root/net/http/http_network_transaction.cc
Commit message (Collapse)AuthorAgeFilesLines
* Implemented RequestHeaders field in extraInfoSpec of webRequest APIbattre@chromium.org2011-05-131-1/+1
| | | | | | | | | BUG=60101 TEST=no Review URL: http://codereview.chromium.org/6931055 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@85260 0039d316-1c4b-4281-b951-d872f2087c98
* Add one-time randomization support for FieldTrial, and the ability tojoi@chromium.org2011-05-101-5/+4
| | | | | | | | | | | | | | | | | | | | | | | disable field trials. I am going to have a need for both soon. Update some documentation about empty trial names, add TrialExists() method and update many call-sites to use this (it simplifies the previous logic which checked for existence and then for non-empty name, which can no longer happen). Refactor a bit in browser_main. While I'm in there and needing base/OWNERS approval, add an OWNERS file for base/metrics that adds jar@chromium.org as an owner for that directory. Initially committed as r84197. Rolled back due to DCHECK in official builds, r84373. Will re-submit with fix. BUG=81750 TEST=base_unittests Review URL: http://codereview.chromium.org/6883102 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@84801 0039d316-1c4b-4281-b951-d872f2087c98
* Revert 84197 - Add one-time randomization support for FieldTrial, and the ↵joi@chromium.org2011-05-061-4/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | ability to disable field trials. I am going to have a need for both soon. Cleaning up some comments about empty trial names, adding static method TrialExists() and simplifying many call sites by using this method. While I'm in there and needing base/OWNERS approval, add an OWNERS file for base/metrics that adds jar@chromium.org as an owner for that directory. BUG=none TEST=base_unittests TBR=jam@chromium.org R=jar@chromium.org,phajdan.jr@chromium.org,mark@chromium.org,wtc@chromium.org Reason for revert: See http://crbug.com/81750 BUG=81750 TBR=joi@chromium.org Review URL: http://codereview.chromium.org/6931048 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@84373 0039d316-1c4b-4281-b951-d872f2087c98
* Re-connect if Keep-Alive connection has been closed by the time we get ↵asanka@chromium.org2011-05-051-2/+5
| | | | | | | | | | | around to reusing it. BUG=none TEST=net_unittests --gtest_filter=HttpNetworkTransactionTest.BasicAuthKeepAliveImpatientServer:*.BasicAuthKeepAliveNoBody:*.BasicAuthKeepAliveLargeBody && unit_tests --gtest_filter=*TransportClientSocketTest.IsConnected* Review URL: http://codereview.chromium.org/6902165 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@84257 0039d316-1c4b-4281-b951-d872f2087c98
* Add one-time randomization support for FieldTrial, and the ability tojoi@chromium.org2011-05-051-5/+4
| | | | | | | | | | | | | | | | | | disable field trials. I am going to have a need for both soon. Cleaning up some comments about empty trial names, adding static method TrialExists() and simplifying many call sites by using this method. While I'm in there and needing base/OWNERS approval, add an OWNERS file for base/metrics that adds jar@chromium.org as an owner for that directory. BUG=none TEST=base_unittests TBR=jam@chromium.org git-svn-id: svn://svn.chromium.org/chrome/trunk/src@84197 0039d316-1c4b-4281-b951-d872f2087c98
* Revert 83524 - Re-connect if Keep-Alive connection has been closed by the ↵asanka@chromium.org2011-04-291-5/+2
| | | | | | | | | time we get around to reusing it. BUG=none TEST=net_unittests --gtest_filter=HttpNetworkTransactionTest.BasicAuthKeepAliveImpatientServer:*.BasicAuthKeepAliveNoBody:*.BasicAuthKeepAliveLargeBody && unit_tests --gtest_filter=*TransportClientSocketTest.IsConnected*Review URL: http://codereview.chromium.org/6878055 TBR=asanka@chromium.org Review URL: http://codereview.chromium.org/6880318 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@83530 0039d316-1c4b-4281-b951-d872f2087c98
* Re-connect if Keep-Alive connection has been closed by the time we get ↵asanka@chromium.org2011-04-291-2/+5
| | | | | | | | | | | | | around to reusing it. BUG=none TEST=net_unittests --gtest_filter=HttpNetworkTransactionTest.BasicAuthKeepAliveImpatientServer:*.BasicAuthKeepAliveNoBody:*.BasicAuthKeepAliveLargeBody && unit_tests --gtest_filter=*TransportClientSocketTest.IsConnected* Review URL: http://codereview.chromium.org/6878055 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@83524 0039d316-1c4b-4281-b951-d872f2087c98
* Flesh out the onBeforeSendHeaders event a bit more. We now send thempcomplete@chromium.org2011-04-271-10/+6
| | | | | | | | | | | | | requestHeaders and allow the extension to modify them. I also changed the network delegate callbacks, so that they accept arguments beyond just a status code, and they do not outlive the object they are bound to. BUG=60101 TEST=automated Review URL: http://codereview.chromium.org/6899001 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@83246 0039d316-1c4b-4281-b951-d872f2087c98
* Implementation of chrome.experimental.webRequest.onRequestSentbattre@chromium.org2011-04-201-0/+5
| | | | | | | | | BUG=60101 TEST=browser_tests --gtest_filter='ExtensionWebRequestApiTest.WebRequestEvents' Review URL: http://codereview.chromium.org/6853014 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@82308 0039d316-1c4b-4281-b951-d872f2087c98
* Allow extensions to redirect requests in onBeforeRequest.mpcomplete@chromium.org2011-04-151-1/+1
| | | | | | | | | | | BUG=60101 TEST=no Committed: http://src.chromium.org/viewvc/chrome?view=rev&revision=81479 Review URL: http://codereview.chromium.org/6677148 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@81782 0039d316-1c4b-4281-b951-d872f2087c98
* Revert "Allow extensions to redirect requests in onBeforeRequest."mpcomplete@chromium.org2011-04-131-1/+1
| | | | | | | The change introduced a regression in the WebRequestEvents api test. TBR=mpcomplete git-svn-id: svn://svn.chromium.org/chrome/trunk/src@81503 0039d316-1c4b-4281-b951-d872f2087c98
* Allow extensions to redirect requests in onBeforeRequest.mpcomplete@chromium.org2011-04-131-1/+1
| | | | | | | | | BUG=60101 TEST=no Review URL: http://codereview.chromium.org/6677148 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@81479 0039d316-1c4b-4281-b951-d872f2087c98
* Revert r61181.agl@chromium.org2011-04-121-10/+0
| | | | | | | | | | This reverts r61181 although, due to the age of that revision, the revert was mostly done manually. This is the start of ripping out Snap Start support. BUG=none TEST=none git-svn-id: svn://svn.chromium.org/chrome/trunk/src@81288 0039d316-1c4b-4281-b951-d872f2087c98
* Rename a number of classes previously labeled "TCP" to "Transport" inmbelshe@chromium.org2011-04-071-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | preparation for non-TCP transports. This helps because the alternative is to either use non-TCP protocols (like SCTP) in classes which are called "TCPClientSocketPool", or to clone the code as "SCTPClientSocketPool", both of which are less than ideal. For now, we're just testing transports, so the TransportSocketPool classes will determine a single type of transport and just use them. In the future we'll likely need to figure out how to deal with runtime selection of transports, and probably support use of multiple transports either within the same pools or within subpools. But that is for the future. Note that the histograms have some "tcp" references to them. I didn't change these to "transport" yet, because it will effect existing histograms. Renames include: classes: TCPClientSocketPool -> TransportClientSocketPool MockTCPClientSocketPool -> MockTransportClientSocketPool TCPSocketParams -> TransportSocketParams methods (not the exhaustive list): CreateTCPClientSocket() -> CreateTransportClientSocket() DoTCPConnect() -> DoTransportConnect() BUG=none TEST=none Review URL: http://codereview.chromium.org/6804028 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@80781 0039d316-1c4b-4281-b951-d872f2087c98
* Move BuildRequestHeaders back to http_network_transaction.cc now that it's ↵abarth@chromium.org2011-04-061-6/+70
| | | | | | | | not needed by SPDY. This reduces the dependencies of http_util.cc and is a partial revert of r63213. Review URL: http://codereview.chromium.org/6794038 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@80557 0039d316-1c4b-4281-b951-d872f2087c98
* net: remove forced renegotiation checksagl@chromium.org2011-04-051-2/+1
| | | | | | | | | | | | | | | We lost this battle. We had to step back from requirement the renegotiation extension, even on sites which we know support it, because of the number of MITM proxies. Since there doesn't seem to be any way forward, this change removes the code. BUG=55410 TEST=compiles Review URL: http://codereview.chromium.org/6792032 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@80513 0039d316-1c4b-4281-b951-d872f2087c98
* Fix line endingsabarth@chromium.org2011-04-041-3/+3
| | | | git-svn-id: svn://svn.chromium.org/chrome/trunk/src@80392 0039d316-1c4b-4281-b951-d872f2087c98
* Fix crash in layout tests due to my previous network delegate change (r79905).mpcomplete@chromium.org2011-04-011-1/+1
| | | | | | | | | | | AddRef the delegate_callback before any early returns, since it will be Released in DoBuildRequestComplete. BUG=webkit/57539 TEST=no TBR=willchan git-svn-id: svn://svn.chromium.org/chrome/trunk/src@80114 0039d316-1c4b-4281-b951-d872f2087c98
* Add request_id to HttpRequestInfo and pass it to the NetworkDelegate for events.mpcomplete@chromium.org2011-03-301-14/+48
| | | | | | | | | | | | | | This lets us look up the request associated with an http transaction and send event details for the webRequest.onBeforeRequest extension event. I also hooked up the onBeforeRequest event for HTTP network and cache transactions so that they are separate from other requests. This lets us have the request header information. BUG=60101 TEST=no Review URL: http://codereview.chromium.org/6698009 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@79905 0039d316-1c4b-4281-b951-d872f2087c98
* Move some files from base to base/memory.levin@chromium.org2011-03-281-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | raw_scoped_refptr_mismatch_checker.h ref_counted.cc ref_counted.h ref_counted_memory.cc ref_counted_memory.h ref_counted_unittest.cc scoped_callback_factory.h scoped_comptr_win.h scoped_handle.h scoped_native_library.cc scoped_native_library.h scoped_native_library_unittest.cc scoped_nsobject.h scoped_open_process.h scoped_ptr.h scoped_ptr_unittest.cc scoped_temp_dir.cc scoped_temp_dir.h scoped_temp_dir_unittest.cc scoped_vector.h singleton.h singleton_objc.h singleton_unittest.cc linked_ptr.h linked_ptr_unittest.cc weak_ptr.cc weak_ptr.h weak_ptr_unittest.cc BUG=None TEST=Compile Review URL: http://codereview.chromium.org/6714032 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@79524 0039d316-1c4b-4281-b951-d872f2087c98
* Reland rest of r77399.willchan@chromium.org2011-03-121-3/+3
| | | | | | | | | | | I had temporarily reverted it so I could break it up into 2 commits, so the first could be merged to 696. This is part 2. BUG=none TEST=none Review URL: http://codereview.chromium.org/6684019 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@77908 0039d316-1c4b-4281-b951-d872f2087c98
* Don't drain response bodies for SpdyHttpStreams.willchan@chromium.org2011-03-111-0/+3
| | | | | | | | | | | | | This should fix the specific instance of crbug.com/75657, although I can't reproduce the bug, so it's possible it may instead push the bug later down the pipeline rather than completely fixing it. I believe it should completely fix it though. This is a partial reland of r77399, which was reverted in order to faciliate this partial reland so I can merge a smaller change into branch 696. BUG=75657 TEST=none Review URL: http://codereview.chromium.org/6680009 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@77893 0039d316-1c4b-4281-b951-d872f2087c98
* Revert r77399 in preparation for merging a small portion of it to 696.willchan@chromium.org2011-03-111-6/+3
| | | | | | | | | | | | | | | | | | Reland r77075,r77077. They were reverted due to flaky tests, especially on valgrind. Basically, we kept hitting the backup socket timer (500ms) which would create another socket, which the tests don't expect, so they crash. I disabled the backup socket timer completely for the SPDY tests, because they make it too hard to handle the parallel alternate protocol jobs. I also deleted the HTTP fallback test from SpdyNetworkTransactionTest, because it had a similar problem. Also, it was already being tested in HttpNetworkTransactionTest. BUG=69688,75000 TEST=Try connecting to belshe.com with various proxy configurations. Should work still. Review URL: http://codereview.chromium.org/6635047 TBR=willchan@chromium.org Review URL: http://codereview.chromium.org/6681012 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@77864 0039d316-1c4b-4281-b951-d872f2087c98
* Reland r77075,r77077.willchan@chromium.org2011-03-091-3/+6
| | | | | | | | | | | | | They were reverted due to flaky tests, especially on valgrind. Basically, we kept hitting the backup socket timer (500ms) which would create another socket, which the tests don't expect, so they crash. I disabled the backup socket timer completely for the SPDY tests, because they make it too hard to handle the parallel alternate protocol jobs. I also deleted the HTTP fallback test from SpdyNetworkTransactionTest, because it had a similar problem. Also, it was already being tested in HttpNetworkTransactionTest. BUG=69688,75000 TEST=Try connecting to belshe.com with various proxy configurations. Should work still. Review URL: http://codereview.chromium.org/6635047 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@77399 0039d316-1c4b-4281-b951-d872f2087c98
* Revert 77075 - Don't block on stream requests on Alternate-Protocol.jochen@chromium.org2011-03-071-6/+3
| | | | | | | | | | | | | | Basically, after we get an HTTP header giving an Alternate-Protocol, we'll end up in a state where we're probably going to issue more HTTP requests. We have the already warm single HTTP connection. We probably don't have a SPDY session open. Previously, once we notice Alternate-Protocol, we'd block on trying to set up the new SPDY session, even though we still have the HTTP connection. Change this so we keep using HTTP until the SPDY session on the Alternate-Protocol becomes available, then we switch over to it. BUG=69688,75000 TEST=Browse to belshe.com. Examine net-internals to make sure it works. Test over a variety of connections (direct / various proxy types). Review URL: http://codereview.chromium.org/6610034 TBR=willchan@chromium.org Review URL: http://codereview.chromium.org/6621040 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@77117 0039d316-1c4b-4281-b951-d872f2087c98
* Don't block on stream requests on Alternate-Protocol.willchan@chromium.org2011-03-061-3/+6
| | | | | | | | | | | Basically, after we get an HTTP header giving an Alternate-Protocol, we'll end up in a state where we're probably going to issue more HTTP requests. We have the already warm single HTTP connection. We probably don't have a SPDY session open. Previously, once we notice Alternate-Protocol, we'd block on trying to set up the new SPDY session, even though we still have the HTTP connection. Change this so we keep using HTTP until the SPDY session on the Alternate-Protocol becomes available, then we switch over to it. BUG=69688,75000 TEST=Browse to belshe.com. Examine net-internals to make sure it works. Test over a variety of connections (direct / various proxy types). Review URL: http://codereview.chromium.org/6610034 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@77075 0039d316-1c4b-4281-b951-d872f2087c98
* Refactor of NetworkDelegate.willchan@chromium.org2011-02-241-2/+2
| | | | | | | | | | | | | | * Renames HttpNetworkDelegate to NetworkDelegate, moves to net/base/network_delegate.h. NOTE: this is a layering violation. wtc/eroman/willchan have agreed to this exception because the other solutions are less palatable. * Move the virtuals in NetworkDelegate to the private section. Use non-virtual public interface as the network stack's interface for notifying the delegate. Add sanity checking to the implmentation in NetworkDelegate. The private virtual interface is for consumers to receive notifications. * Remove ExtensionIOEventRouter from ChromeURLRequestContext, it is only used by the ChromeNetworkDelegate. Pass it directly to the ChromeNetworkDelegate's constructor. * Introduce a SystemNetworkDelegate. It does nothing right now. BUG=67232 TEST=none Review URL: http://codereview.chromium.org/6580002 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@75822 0039d316-1c4b-4281-b951-d872f2087c98
* Refactor HttpStreamFactory.willchan@chromium.org2011-02-231-11/+28
| | | | | | | | | | | | | | | | | | | Rename StreamFactory and StreamRequest to HttpStreamFactory and HttpStreamRequest. Rename HttpStreamFactory to HttpStreamFactoryImpl. Create HttpStreamFactoryImpl::Request (inherits from HttpStreamRequest) and HttpStreamFactoryImpl::Job (most of the old HttpStreamRequest code, other than the interface, moved here). Currently there is still a strong binding within HttpStreamFactoryImpl between requests and jobs. This will be removed in a future changelist. Note that due to the preparation for late binding, information like HttpRequestInfo and SSLConfig and ProxyInfo are just copied. It's possible we can consider refcounting them to reduce copies, but I think it's not worth the effort / ugliness. I also did some minor cleanups like moving SpdySettingsStorage into SpdySessionPool and some CloseIdleConnections() cleanup. BUG=54371,42669 TEST=unit tests Committed: http://src.chromium.org/viewvc/chrome?view=rev&revision=75668 Review URL: http://codereview.chromium.org/6543004 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@75688 0039d316-1c4b-4281-b951-d872f2087c98
* Revert 75668 for breaking ChromeOS build - Refactor HttpStreamFactory.willchan@chromium.org2011-02-231-28/+11
| | | | | | | | | | | | | | | | | | | Rename StreamFactory and StreamRequest to HttpStreamFactory and HttpStreamRequest. Rename HttpStreamFactory to HttpStreamFactoryImpl. Create HttpStreamFactoryImpl::Request (inherits from HttpStreamRequest) and HttpStreamFactoryImpl::Job (most of the old HttpStreamRequest code, other than the interface, moved here). Currently there is still a strong binding within HttpStreamFactoryImpl between requests and jobs. This will be removed in a future changelist. Note that due to the preparation for late binding, information like HttpRequestInfo and SSLConfig and ProxyInfo are just copied. It's possible we can consider refcounting them to reduce copies, but I think it's not worth the effort / ugliness. I also did some minor cleanups like moving SpdySettingsStorage into SpdySessionPool and some CloseIdleConnections() cleanup. BUG=54371,42669 TEST=unit tests Review URL: http://codereview.chromium.org/6543004 TBR=willchan@chromium.org git-svn-id: svn://svn.chromium.org/chrome/trunk/src@75670 0039d316-1c4b-4281-b951-d872f2087c98
* Refactor HttpStreamFactory.willchan@chromium.org2011-02-221-11/+28
| | | | | | | | | | | | | | | | | Rename StreamFactory and StreamRequest to HttpStreamFactory and HttpStreamRequest. Rename HttpStreamFactory to HttpStreamFactoryImpl. Create HttpStreamFactoryImpl::Request (inherits from HttpStreamRequest) and HttpStreamFactoryImpl::Job (most of the old HttpStreamRequest code, other than the interface, moved here). Currently there is still a strong binding within HttpStreamFactoryImpl between requests and jobs. This will be removed in a future changelist. Note that due to the preparation for late binding, information like HttpRequestInfo and SSLConfig and ProxyInfo are just copied. It's possible we can consider refcounting them to reduce copies, but I think it's not worth the effort / ugliness. I also did some minor cleanups like moving SpdySettingsStorage into SpdySessionPool and some CloseIdleConnections() cleanup. BUG=54371,42669 TEST=unit tests Review URL: http://codereview.chromium.org/6543004 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@75668 0039d316-1c4b-4281-b951-d872f2087c98
* NetLog: Log net error codes on a lot of EndEvents.mmenke@chromium.org2011-02-081-5/+8
| | | | | | | | | BUG=none TEST=none Review URL: http://codereview.chromium.org/6349083 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@74143 0039d316-1c4b-4281-b951-d872f2087c98
* Return more specific error messages when performing a SSL client auth ↵rsleevi@chromium.org2011-02-051-2/+14
| | | | | | | | | | | handshake and an error signing with the certificate private key is encountered, rather than using ERR_FAILED/ERR_SSL_PROTOCOL_ERROR. BUG=69609 TEST=none Review URL: http://codereview.chromium.org/6371014 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@73891 0039d316-1c4b-4281-b951-d872f2087c98
* Refactor HttpNetworkSession construction.willchan@chromium.org2011-02-031-16/+1
| | | | | | | | | | | Introduce HttpNetworkSession::Params. This should make it easy to add new optionally NULL parameters. I also took this opportunity to eliminate some copy/pastes of TestURLRequestContext and make them use the original. I was also able to remove the need for ClientSocketFactory::GetDefaultFactory() calls and new SpdySessionPool() calls in most places. BUG=none TEST=none Review URL: http://codereview.chromium.org/6349028 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@73669 0039d316-1c4b-4281-b951-d872f2087c98
* Address post-review/commit nits from wtc for r71096 ( ↵rsleevi@chromium.org2011-01-131-3/+4
| | | | | | | | | | | http://codereview.chromium.org/6017010/ ) and r71071 ( http://codereview.chromium.org/6120002/ ) BUG=none TEST=none Review URL: http://codereview.chromium.org/6221004 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@71270 0039d316-1c4b-4281-b951-d872f2087c98
* net: Ensure that when using False Start + client auth, bad client ↵agl@chromium.org2011-01-111-27/+54
| | | | | | | | | | | | | | | | | | | | | | | certificates are not cached. If an SSL handshake fails when client certificates are used, ensure that the client certificate selected is removed from the SSL client auth cache. This ensures that the user is prompted to select a certificate again, as the cause of the failure may have been due to selecting the wrong certificate or selecting no certificate when one is required. The existing logic worked when TLS False Start was disabled, but could fail when False Start was used or when the peer requests renegotiation. This changes ensures the client certificate is removed from the cache by moving the cache removal layer from the HttpStreamRequest to the HttpNetworkTransaction. Patch by: Ryan Sleevi BUG=66424 TEST=HttpNetworkTransactionTest.ClientAuthCertCache* git-svn-id: svn://svn.chromium.org/chrome/trunk/src@71071 0039d316-1c4b-4281-b951-d872f2087c98
* Allow a non-200 (or non-407) response for a CONNECT request from an HTTPS proxyrch@chromium.org2010-12-171-3/+20
| | | | | | | | | | | | | | | | | to be consumed by chrome. Among other things, this will allow the proxy to inform the user that the hostname could not be resolved or similar conditions. This adds a new OnHttpsProxyTunnelConnectionResponse method to StreamRequest::Delegate which is invoked when an HTTPS proxy returns a non-200, non-407 response. The method is called with an HttpResponseInfor argument to access the request headers, and an HttpStream argument to access the response body. BUG=none TEST=HttpNetworkTransactionTest Review URL: http://codereview.chromium.org/4935001 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@69513 0039d316-1c4b-4281-b951-d872f2087c98
* Remember if a user declines to provide a server with a client certificatersleevi@chromium.org2010-11-221-21/+32
| | | | | | | | | | | | | | | | | When an SSL/TLS server requests a client certificate, the user may opt to not send any certificate. This will work if the server does not require a client certificate to be sent in order to load the resource - for example, to fall-back to forms-based authentication or when client certificates are configured as optional. If the user declines to provide a client certificate, remember that choice in the SSLClientAuthCache so that they will not be repeatedly prompted to select a certificate (declining each time) for every sub-resource that loads, similar to how the SSLClientAuthCache remembers an explicit certificate selected by a user. If the server requires a client certificate, it is expected that it will abort the TLS handshake with an appropriate TLS error code. When the server aborts and the error code is processed, the existing cached selection will be removed, and the user will be re-prompted to select a certificate on their next connection to that server. If the server requires a client certificate to continue, but does not use the TLS stack to indicate that requirement - for example, to return a "friendlier" error page or an HTTP error code like 403, the selection will not be evicted from the cache, and the user must restart the browser before they will be prompted again for a certificate from that server. This is the same lifetime and behaviour as would happen if the user actively selected a certificate, rather than declined to provide one. BUG=56177 TEST=SSLClientAuthCacheTest.LookupNullPreference . Also see the Apache configuration in http://crbug.com/56177. Access a site that requests, but does not require, client authentication, which will attempt to load multiple sub-resources, and which does not permit HTTP KeepAlives. Review URL: http://codereview.chromium.org/4568002 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@66931 0039d316-1c4b-4281-b951-d872f2087c98
* Correctly handle SSL Client Authentication requests when connectingrch@chromium.org2010-11-121-4/+4
| | | | | | | | | | | 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: restart on NPN misprediction and add tests for Snap Start errors.agl@chromium.org2010-11-111-0/+10
| | | | | | | | | | | | | | | | Restart an HTTP load when we mispredict the NPN protocol in a Snap Start connection. Also, test the behaviour of the HTTP layer when SSL errors result from the first Write() call. When we are doing Snap Start, we need to merge the first application data record into the ClientHello. Thus the SSL socket will report that it has connected immedately in order to get a Write() call. This means that some errors, which would typically result from the Connect(), are now returned on the first Write(). BUG=none TEST=net_unittests git-svn-id: svn://svn.chromium.org/chrome/trunk/src@65837 0039d316-1c4b-4281-b951-d872f2087c98
* Change the way request headers are logged to the NetLog to ensurerch@chromium.org2010-11-111-6/+0
| | | | | | | | | | | | | | | | | | that the complete request is logged, not just the extra_headers. Before I broke things, HttpNetworkTransaction was attempting to do the logging, but after some refactors it no longer has access to the final request. SpdySession already logs correctly in the SPDY case, and I modified HttpBasicStream to log in the HTTP case. Added unit tests is both HttpNetworkTransactionTest and SpdyNetworkTransactionTest. BUG=48962 TEST=net_unittests --gtest_filter=HttpNetworkTransactionTest.SimpleGET\* Review URL: http://codereview.chromium.org/4644003 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@65736 0039d316-1c4b-4281-b951-d872f2087c98
* Crash fix: HTTPS server responds with 407 through non-authenticating proxy.cbentzel@chromium.org2010-11-051-0/+5
| | | | | | | | | | | Now, HttpNetworkTransaction::HandleAuthChallenge returns ERR_INVALID_PROXY_AUTHENTICATE when this is detected. BUG=61701 TEST=net_unittests --gtest_filter="*HttpsServerRequestsProxyAuthThroughProxy*" Review URL: http://codereview.chromium.org/4575001 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@65225 0039d316-1c4b-4281-b951-d872f2087c98
* Convert implicit scoped_refptr constructor calls to explicit ones, part 2thakis@chromium.org2010-11-021-3/+3
| | | | | | | | | | | | This CL was created automatically by this clang rewriter: http://codereview.appspot.com/2826041 I then did quite a bit of manual editing to fix style issues. BUG=28083 TEST=None Review URL: http://codereview.chromium.org/4291001 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@64798 0039d316-1c4b-4281-b951-d872f2087c98
* Convert implicit scoped_refptr constructor calls to explicit ones, part 1thakis@chromium.org2010-11-011-2/+2
| | | | | | | | | | | 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
* Modify HttpNetworkTransation to handle ERR_SSL_CLIENT_AUTH_CERT_NEEDEDrch@chromium.org2010-10-291-3/+2
| | | | | | | | | | | | | | in DoCreateStreamComplete instead of DoInitStreamComplete. This solves the problem where Chrome repeately prompts for ssl client certs. BUG=56019 TEST=Visit a URL which requests SSL client authentication. Select a certificate. Navigate around the site without being re-prompted to select a certificate. Review URL: http://codereview.chromium.org/4164004 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@64360 0039d316-1c4b-4281-b951-d872f2087c98
* HttpStream::SendRequestrch@chromium.org2010-10-271-27/+12
| | | | | | | | | | | Modify HttpStream::SendRequest to take the HttpRequestHeaders instead of a string so that HttpNetworkTransaction can handle both HTTP and SPDY requests the same way. BUG= TEST= Review URL: http://codereview.chromium.org/4061005 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@64082 0039d316-1c4b-4281-b951-d872f2087c98
* net: move SSL host info serialisation into SSLHostInfoagl@chromium.org2010-10-201-1/+0
| | | | | | | | | | | | | | | | | 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
* Move BuildRequestHeaders from HttpNetworkTransaction to rch@chromium.org2010-10-201-88/+12
| | | | | | | | | | | | | HttpUtil::BuildRequestHeaders, so that it can be used directly by SpdyHttpStream, removing the code duplication. Strip proxy-connection header from SPDY requests to be consistent with Connection header. BUG=none TEST=none Review URL: http://codereview.chromium.org/3831005 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@63213 0039d316-1c4b-4281-b951-d872f2087c98
* Revert revert 62918 - net: clean up SSLHostInfo construction."agl@chromium.org2010-10-191-4/+0
| | | | | | | 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-0/+4
| | | | | | | | | | | | | | | | 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-4/+0
| | | | | | | | | | | | | 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