summaryrefslogtreecommitdiffstats
path: root/net/http/http_stream_factory.h
Commit message (Collapse)AuthorAgeFilesLines
* Cleanup: Remove unneeded forward declararations in net.thestig@chromium.org2011-11-111-3/+0
| | | | | | | | BUG=none TEST=none Review URL: http://codereview.chromium.org/8525020 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@109590 0039d316-1c4b-4281-b951-d872f2087c98
* Use AuthCredentials throughout the network stack instead of username/password.cbentzel@chromium.org2011-10-281-2/+3
| | | | | | | | This is a refactor only - no behavior change should happen. Review URL: http://codereview.chromium.org/8340026 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@107766 0039d316-1c4b-4281-b951-d872f2087c98
* Basic HTTP pipelining support.simonjam@chromium.org2011-10-191-0/+7
| | | | | | | | | | | | | | | | | | | | | | | | This must be enabled in about:flags. It is naive and assumes all servers correctly implement pipelining. Proxies are not supported. Immediate future work: - Integration tests. - Additional NetLog logging. - Refactor HttpPipelinedConnectionImpl. Long term: - Detect broken transparent proxies. - Detect and/or mitigate broken servers. - Buffer HttpPipelinedStream. - Optimize number of pipelines and their depth. - Support proxies. BUG=8991 TEST=net_unittests Review URL: http://codereview.chromium.org/7289006 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@106364 0039d316-1c4b-4281-b951-d872f2087c98
* Reset static HttpStreamFactory settings before each test in a NetTestSuite.szym@chromium.org2011-10-181-0/+4
| | | | | | | | | | | | | | This improves test isolation. BUG= TEST=./net_unittests --gtest_shuffle=1 --gtest_random_seed=56044 More specifically: TEST=./net_unittests --gtest_shuffle=1 --gtest_random_seed=56044 --gtest_filter=Spdy/SpdyNetworkTransactionTest.ThreeGets/1:HttpStreamFactoryTest.PreconnectHttpProxy Review URL: http://codereview.chromium.org/8295009 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@106106 0039d316-1c4b-4281-b951-d872f2087c98
* net: rework the NPN patch.agl@chromium.org2011-10-181-7/+14
| | | | | | | | | | | | | | | | | | This change moves the protocol selection logic out of NSS and into Chromium code. This allows some things to be a little cleaner (no more wire-encoded NPN strings) and also allows for some tricks that we have been considering for SPDY+WebSockets. As a consequence of this change, next protocols are now a std::vector<std::string> rather than an encoded char* BUG=none TEST=SPDY still works with Google sites. Review URL: http://codereview.chromium.org/8156001 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@106093 0039d316-1c4b-4281-b951-d872f2087c98
* Migrate HttpAlternateProtocols to HttpServerPropertiesImpl.willchan@chromium.org2011-10-101-2/+2
| | | | | | | | | | | | | Hooks in HttpServerPropertiesManager also. No persistence done yet. This is all plumbing. Also require HttpServerProperties in HttpNetworkSession::Params. BUG=98472 TEST=none Review URL: http://codereview.chromium.org/8211003 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@104696 0039d316-1c4b-4281-b951-d872f2087c98
* Change HttpNetworkTransaction and HttpStreamFactoryImpl::Job rch@chromium.org2011-09-021-2/+4
| | | | | | | | | | | | | | to keep different SSLConfig objects for HTTPS Proxies vs HTTPS Servers. Add an is_proxy field to SSLCertRequest indicating if the request came from a proxy or from an origin server. BUG=95071 Review URL: http://codereview.chromium.org/7768002 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@99392 0039d316-1c4b-4281-b951-d872f2087c98
* Rename NET_API to NET_EXPORT, and rename NET_TEST to NET_EXPORT_PRIVATE.darin@chromium.org2011-08-121-4/+4
| | | | | | Review URL: http://codereview.chromium.org/7529043 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@96560 0039d316-1c4b-4281-b951-d872f2087c98
* Net: Add NET_API to some http code.rvargas@google.com2011-05-191-3/+4
| | | | | | | | BUG=76997 TEST=NONE Review URL: http://codereview.chromium.org/6969080 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@86009 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
* The SPDY Exclusions were broken; the intent of the exclusion is so that ourmbelshe@chromium.org2011-03-161-3/+2
| | | | | | | | | | | | | benchmark harness can force SPDY, but still report to the benchmark harness itself in non-spdy mode. BUG=none TEST=none Review URL: http://codereview.chromium.org/6674031 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@78400 0039d316-1c4b-4281-b951-d872f2087c98
* Reland rest of r77399.willchan@chromium.org2011-03-121-5/+2
| | | | | | | | | | | 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
* Revert r77399 in preparation for merging a small portion of it to 696.willchan@chromium.org2011-03-111-2/+5
| | | | | | | | | | | | | | | | | | 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-5/+2
| | | | | | | | | | | | | 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-2/+5
| | | | | | | | | | | | | | 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-5/+2
| | | | | | | | | | | 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 HttpStreamFactory.willchan@chromium.org2011-02-231-51/+162
| | | | | | | | | | | | | | | | | | | 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-162/+51
| | | | | | | | | | | | | | | | | | | 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-51/+162
| | | | | | | | | | | | | | | | | 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
* Even more reordering the methods in headers and implementation in net/.erg@google.com2011-01-201-29/+25
| | | | | | | | | BUG=68682 TEST=compiles Review URL: http://codereview.chromium.org/6314010 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@71880 0039d316-1c4b-4281-b951-d872f2087c98
* Add a port to the SPDY debugging flags so that we can force SPDY for just ambelshe@chromium.org2011-01-081-0/+14
| | | | | | | | | | | | single port without forcing SPDY on all ports. BUG=none TEST=none --use-spdy="ssl,port=1000" Review URL: http://codereview.chromium.org/6083012 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@70834 0039d316-1c4b-4281-b951-d872f2087c98
* Clobber the state of the next-protocol-negotiation when disabling spdy.mbelshe@chromium.org2010-12-211-0/+2
| | | | | | | | | | | | | | | | We basically have two sets of config for SPDY - one is a general enablement flag, the other is the next-protocol advertisement. We previously could configure to advertise SPDY over NPN, but have SPDY disabled; this would lead to the bug with broken 'download' when accessing a SPDY page. BUG=66891 TEST=none Review URL: http://codereview.chromium.org/6007002 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@69891 0039d316-1c4b-4281-b951-d872f2087c98
* Add the "virtual" keyword on method overrides that are missing it.erg@google.com2010-12-081-2/+2
| | | | | | | | | BUG=none TEST=compiles Review URL: http://codereview.chromium.org/5648004 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@68606 0039d316-1c4b-4281-b951-d872f2087c98
* Revert 61897 - Do not use Alternate-Protocol for establishing new SpdySessions.mbelshe@chromium.org2010-10-161-9/+1
| | | | | | | | | | | | | | | | | | | | | Only use Alternate-Protocol for latching onto existing SpdySessions. This is a temporary change until SSL improvements are made, so we can begin sending http over spdy when available. Note that we have to do proxy resolution one time to figure out how to check for the appropriate existing SpdySession. If no SpdySession exists, we fallback again and have to redo proxy resolution (since the alternate protocol of npn-spdy requires rewriting the URI from http:// to https://). So we may end up doing two proxy resolutions in the fallback case. I had to disable all the tests that test establishing a new SpdySession for http:// URIs, since we don't do that for now. BUG=none TEST=none Review URL: http://codereview.chromium.org/3573013 TBR=willchan@chromium.org Review URL: http://codereview.chromium.org/3751009 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@62873 0039d316-1c4b-4281-b951-d872f2087c98
* Add an off switch for SPDY:mbelshe@chromium.org2010-10-161-0/+7
| | | | | | | | | | | --use-spdy=off BUG=none TEST=SpdyNetworkTransactionTest.SpdyOnOffToggle Review URL: http://codereview.chromium.org/3807008 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@62870 0039d316-1c4b-4281-b951-d872f2087c98
* Plumb up the preconnect logic from pools to StreamFactory.willchan@chromium.org2010-10-161-8/+22
| | | | | | | | | BUG=54450 TEST=none Review URL: http://codereview.chromium.org/3750009 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@62827 0039d316-1c4b-4281-b951-d872f2087c98
* Cleanup StreamFactory && StreamRequest APIs.willchan@chromium.org2010-10-141-7/+6
| | | | | | | | | | | | Stop refcounting StreamRequest. Establish a clear ownership of the StreamRequest. Deletion implies cancellation. Use ScopedRunnableMethodFactory::NewRunnableMethod() instead of NewRunnableMethod(). Remove Start() from StreamRequest. This is an implementation detail of HttpStreamRequest, so it only exists there now. BUG=59103 TEST=existing, this is a pure refactor. Review URL: http://codereview.chromium.org/3746002 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@62581 0039d316-1c4b-4281-b951-d872f2087c98
* Add a RenewStreamForAuth method to HttpStream, replacing DetachConnectionvandebo@chromium.org2010-10-141-1/+0
| | | | | | | | | BUG=58192 TEST=Start chrome with --auth-schemes=NTLM and --proxy-server pointing to a Microsoft Forefront Threat Management Gateway proxy configurated for Integrated Authentication. Assuming the user is part of the same domain as the proxy, authentication should work transparently, and the user should not be presented with auth prompts. Also, net_unittests should pass. Review URL: http://codereview.chromium.org/3676004 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@62564 0039d316-1c4b-4281-b951-d872f2087c98
* Do not use Alternate-Protocol for establishing new SpdySessions.willchan@chromium.org2010-10-081-1/+9
| | | | | | | | | | | | | | | | | | Only use Alternate-Protocol for latching onto existing SpdySessions. This is a temporary change until SSL improvements are made, so we can begin sending http over spdy when available. Note that we have to do proxy resolution one time to figure out how to check for the appropriate existing SpdySession. If no SpdySession exists, we fallback again and have to redo proxy resolution (since the alternate protocol of npn-spdy requires rewriting the URI from http:// to https://). So we may end up doing two proxy resolutions in the fallback case. I had to disable all the tests that test establishing a new SpdySession for http:// URIs, since we don't do that for now. BUG=none TEST=none Review URL: http://codereview.chromium.org/3573013 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@61897 0039d316-1c4b-4281-b951-d872f2087c98
* Detach the ClientSocketHandle from an HttpStream so the same socket can be ↵cbentzel@chromium.org2010-10-061-0/+1
| | | | | | | | | | | | | reused for multiple rounds of NTLM authentication. BUG=57261 TEST=Start chrome with --auth-schemes=NTLM and --proxy-server pointing to a Microsoft Forefront Threat Management Gateway proxy configurated for Integrated Authentication. Assuming the user is part of the same domain as the proxy, authentication should work transparently, and the user should not be presented with auth prompts. Also, net_unittests should pass. Review URL: http://codereview.chromium.org/3578016 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@61724 0039d316-1c4b-4281-b951-d872f2087c98
* Move the stream initialization out of the HttpStreamRequest and backmbelshe@chromium.org2010-08-251-2/+1
| | | | | | | | | | | | | | into the HttpNetworkTransaction. The reason is because the stream factory should get the stream connected, but not actually initialize the stream; stream initialization should only happen when the stream uses it. BUG=none TEST=none Review URL: http://codereview.chromium.org/3137034 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@57342 0039d316-1c4b-4281-b951-d872f2087c98
* Remove obviously unneeded forward declarations from headers under ↵viettrungluu@chromium.org2010-08-211-3/+0
| | | | | | | | | | | src/{app,base,net}. BUG=none TEST=builds Review URL: http://codereview.chromium.org/3136025 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@56995 0039d316-1c4b-4281-b951-d872f2087c98
* Extract connection logic from HttpNetworkTransaction into a newmbelshe@chromium.org2010-08-191-0/+113
HttpStreamFactory. The HttpNetworkTransaction now deals exclusively with streams rather than connections directly. This cut the size of HTN roughly in in half. The HttpNetworkTransaction is still responsible for all proxy and server authentication functions. This is because the streams may come and go - we could create a stream, have the server declare auth is needed, and then the next attempt would be on a different stream. So Auth belongs on the HNT. The HNT no longer has direct access to the connection itself; instead, it only knows of an HttpStream. The StreamRequest, however, is responsible for determining whether the connection needs to use a proxy, whether AlternateProtocols are available, and whether the connection should be SPDY or HTTP. Other changes: - moved some static configuration methods from HNT to HttpStreamFactory. - added some methods to the HttpStream. BUG=none TEST=all Review URL: http://codereview.chromium.org/3171002 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@56646 0039d316-1c4b-4281-b951-d872f2087c98