summaryrefslogtreecommitdiffstats
path: root/net/http/http_stream.h
Commit message (Collapse)AuthorAgeFilesLines
* Make HttpStream take a scoped_ptr<UploadDataStream>, to clearly communicate ↵rsleevi@chromium.org2012-06-141-4/+4
| | | | | | | | | | | | | | | | | | | transfer of ownership HttpStream assumes ownership of the passed in UploadDataStream when SendRequest is called. However, there existed a few call sites where the passed in UploadDataStream may have been leaked, primarily during error handling. Using scoped_ptr<> & Pass() provide clear API-level contracts as to the ownership of pointers. BUG=none TEST=existing R=willchan@chromium.org Review URL: https://chromiumcodereview.appspot.com/10539137 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@142211 0039d316-1c4b-4281-b951-d872f2087c98
* base::Bind: Convert most of net/http.jhawkins@chromium.org2011-12-201-4/+4
| | | | | | | | | | BUG=none TEST=none R=csilv Review URL: http://codereview.chromium.org/8990001 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@115220 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
* Begin CompletionCallback switchover.willchan@chromium.org2011-10-011-4/+4
| | | | | | | | | | | | | Rename CompletionCallback to OldCompletionCallback in preparation for introducing a new CompletionCallback based on base::Callback. Also renames other CompletionCallback types like CancelableCompletionCallback and TestCompletionCallback and CompletionCallbackImpl. All using sed with s/CompletionCallback/OldCompletionCallback/g. BUG=98719 TEST=none Review URL: http://codereview.chromium.org/8070013 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@103650 0039d316-1c4b-4281-b951-d872f2087c98
* Rename NET_API to NET_EXPORT, and rename NET_TEST to NET_EXPORT_PRIVATE.darin@chromium.org2011-08-121-2/+2
| | | | | | Review URL: http://codereview.chromium.org/7529043 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@96560 0039d316-1c4b-4281-b951-d872f2087c98
* Warmth of a connection (cwnd) is estimated by the amount of data written to ↵gagansingh@google.com2011-06-271-0/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | the socket. Choosing the warmest connection would mean faster resource load times. idle time is the time a socket has remained idle (no http requests being served on it). Probability of server resetting a connection increases with idle time duration. Using a cost function that takes into account bytes transferred and idle time to pick best connection to schedule http requests on. CODEREVIEW done in http://codereview.chromium.org/6990036/ Contributed by gagansingh@google.com Committed: http://src.chromium.org/viewvc/chrome?view=rev&revision=90373 Reverted: http://codereview.chromium.org/7255002 :( Have fixed 2 things since: 1. Removed LOG(ERROR) from http_basic_stream.cc that was causing layout tests to fail. 2. Initialized class variables in http_basic_stream.cc that was causing uninitialized memory bugs in valgrind: http://code.google.com/p/chromium/issues/detail?id=87423 Review URL: http://codereview.chromium.org/7251004 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@90601 0039d316-1c4b-4281-b951-d872f2087c98
* Revert 90373 - Warmth of a connection (cwnd) is estimated by the amount of ↵dimich@chromium.org2011-06-241-4/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | data written to the socket. Choosing the warmest connection would mean faster resource load times. Caused layout tests http/tests/loading/redirect-methods.html and http/tests/security/xss-DENIED-iframe-src-alias.html fail on deps WebKit bots, and caused http://code.google.com/p/chromium/issues/detail?id=87423 Deps bots failures: http://test-results.appspot.com/dashboards/flakiness_dashboard.html#group=%40ToT%20-%20chromium.org&tests=http%2Ftests%2Floading%2Fredirect-methods.html%2Chttp%2Ftests%2Fsecurity%2Fxss-DENIED-iframe-src-alias.html idle time is the time a socket has remained idle (no http requests being served on it). Probability of server resetting a connection increases with idle time duration. Using a cost function that takes into account bytes transferred and idle time to pick best connection to schedule http requests on. CODEREVIEW done in http://codereview.chromium.org/6990036/ Contributed by gagansingh@google.com Review URL: http://codereview.chromium.org/7189055 TBR=gagansingh@google.com Review URL: http://codereview.chromium.org/7255002 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@90389 0039d316-1c4b-4281-b951-d872f2087c98
* Warmth of a connection (cwnd) is estimated by the amount of data written to ↵gagansingh@google.com2011-06-241-0/+4
| | | | | | | | | | | | | | | | | | | the socket. Choosing the warmest connection would mean faster resource load times. idle time is the time a socket has remained idle (no http requests being served on it). Probability of server resetting a connection increases with idle time duration. Using a cost function that takes into account bytes transferred and idle time to pick best connection to schedule http requests on. CODEREVIEW done in http://codereview.chromium.org/6990036/ Contributed by gagansingh@google.com Review URL: http://codereview.chromium.org/7189055 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@90373 0039d316-1c4b-4281-b951-d872f2087c98
* Net: Add NET_API to some http code.rvargas@google.com2011-05-191-1/+2
| | | | | | | | 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
* Re-connect if Keep-Alive connection has been closed by the time we get ↵asanka@chromium.org2011-05-051-1/+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
* Revert 83524 - Re-connect if Keep-Alive connection has been closed by the ↵asanka@chromium.org2011-04-291-5/+1
| | | | | | | | | 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-1/+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
* Don't drain response bodies for SpdyHttpStreams.willchan@chromium.org2011-03-111-0/+4
| | | | | | | | | | | | | 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-4/+0
| | | | | | | | | | | | | | | | | | 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-0/+4
| | | | | | | | | | | | | 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-4/+0
| | | | | | | | | | | | | | 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-0/+4
| | | | | | | | | | | 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
* HttpStream::SendRequestrch@chromium.org2010-10-271-2/+3
| | | | | | | | | | | 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
* Add a RenewStreamForAuth method to HttpStream, replacing DetachConnectionvandebo@chromium.org2010-10-141-12/+7
| | | | | | | | | 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
* Detach the ClientSocketHandle from an HttpStream so the same socket can be ↵cbentzel@chromium.org2010-10-061-0/+12
| | | | | | | | | | | | | 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
* Eliminate HttpStreamHandle. The name confused me.willchan@chromium.org2010-09-211-1/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | HttpStreamHandle was a combination of an HttpStream and a scoped_ptr<ClientSocketHandle>. This let it manage the transport socket if so desired. I think that the HttpStream should be in charge of managing this. * HttpBasicStream should always release it to the pool when done, but perhaps disconnect it first. * HttpPipelinedStream (or whatever we name it) should know not to disconnect the transport socket or whatever. It should return it to the pipeline stream manager. * SPDY subtypes of HttpStream do not manage the transport socket. They let the SpdySession handle it. Since the ownership pattern varies based on the HttpStream subtype, I think letting a HttpStreamHandle class perhaps control it is confusing. It's better for the subtype to know what it's supposed to do. There was only one hangup here, the HttpProxyClientSocket, since it might need to Disconnect() and then re-Connect() the transport socket. It was using an HttpBasicStream, which, with my change, would own the transport socket handle. I fixed this by making the HttpProxyClientSocket create an HttpStreamParser instead, which does not own the transport socket handle. Review URL: http://codereview.chromium.org/3133029 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@60117 0039d316-1c4b-4281-b951-d872f2087c98
* Extract connection logic from HttpNetworkTransaction into a newmbelshe@chromium.org2010-08-191-2/+32
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
* I've refactored HttpStream, SpdyHttpStream and HttpBasicStream so thatrch@chromium.org2010-07-291-3/+9
| | | | | | | | | | | | SpdyHttpStream now implements (a slightly wider) HttpStream interface. BUG=50268 TEST=none Review URL: http://codereview.chromium.org/3079002 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@54154 0039d316-1c4b-4281-b951-d872f2087c98
* `#pragma once` for app, base, chrome, gfx, ipc, net, skia, viewsthakis@chromium.org2010-07-261-0/+1
| | | | | | | | | BUG=50273 TEST=everything still builds, build is 10% faster on windows, same speed on mac/linux TBR: erg git-svn-id: svn://svn.chromium.org/chrome/trunk/src@53716 0039d316-1c4b-4281-b951-d872f2087c98
* Use HttpRequestHeaders for extra_headers.willchan@chromium.org2010-04-201-1/+1
| | | | | | | | BUG=22588 Review URL: http://codereview.chromium.org/1604011 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@45096 0039d316-1c4b-4281-b951-d872f2087c98
* Use 0 for successful end of stream.vandebo@chromium.org2010-03-081-2/+2
| | | | | | | | | BUG=25032 TEST=none Review URL: http://codereview.chromium.org/669122 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@40938 0039d316-1c4b-4281-b951-d872f2087c98
* Add ERR_END_OF_STREAMvandebo@google.com2010-02-241-6/+8
| | | | | | | | | | | | Add new error code "END_OF_STREAM" and use it in HttpStreamParser. Update a test to expect failure instead of success on an incomplete stream. BUG=25032 TEST=updated unittests Review URL: http://codereview.chromium.org/650190 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@39822 0039d316-1c4b-4281-b951-d872f2087c98
* Include completion_callback.h instead of client_socket_handle.h.wtc@chromium.org2010-02-091-1/+1
| | | | | | | | | | | This header doesn't use anything from client_socket_handle.h. R=vandebo BUG=none TEST=No compilation errors. Review URL: http://codereview.chromium.org/579015 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@38492 0039d316-1c4b-4281-b951-d872f2087c98
* Make the transactions own the HttpResponseInfo.willchan@chromium.org2009-12-161-0/+1
| | | | | | | | Necessary since we need the SSLInfo to handle certificate errors, but it lives within the HttpResponseInfo. SSL is before we choose http or spdy, so we don't have an http stream or a spdy stream yet, so they cannot own the HttpResponseInfo. Review URL: http://codereview.chromium.org/500039 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@34773 0039d316-1c4b-4281-b951-d872f2087c98
* Increase the maximum allowed read buffer to 2MB.vandebo@chromium.org2009-11-241-1/+1
| | | | | | | | | BUG=28670 TEST=DevToolsSanityTest Review URL: http://codereview.chromium.org/435015 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@32983 0039d316-1c4b-4281-b951-d872f2087c98
* A large Content-Length header followed by a connection close could trigger ↵vandebo@chromium.org2009-11-231-7/+8
| | | | | | | | | | | | an out of memory condition. Fixed problem, added unit test, and clarified the API. This is probably the real problem in issue 25826. BUG=28346, 25826 TEST=HttpNetworkTransactionTest.LargeContentLengthThenReset Review URL: http://codereview.chromium.org/418035 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@32856 0039d316-1c4b-4281-b951-d872f2087c98
* Refactor HttpNetworkTransaction so that HttpStream is responsible for ↵vandebo@chromium.org2009-10-171-29/+52
| | | | | | | | | | | | | parsing the Http traffic. HttpBasicStream delegates parsing to HttpStreamParser in preparation for HttpPipelinedStream. Original review: http://codereview.chromium.org/249031 BUG=13289 TEST=unittests Review URL: http://codereview.chromium.org/283022 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@29379 0039d316-1c4b-4281-b951-d872f2087c98
* Reverting 29316.vandebo@chromium.org2009-10-161-52/+29
| | | | | | Review URL: http://codereview.chromium.org/292002 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@29320 0039d316-1c4b-4281-b951-d872f2087c98
* Refactor HttpNetworkTransaction so that HttpStream is responsible for ↵vandebo@chromium.org2009-10-161-29/+52
| | | | | | | | | | | parsing the Http traffic. HttpBasicStream delegates parsing to HttpStreamParser in preparation for HttpPipelinedStream. BUG=13289 TEST=unittests Review URL: http://codereview.chromium.org/249031 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@29316 0039d316-1c4b-4281-b951-d872f2087c98
* Introduce HttpStream and HttpBasicStream.willchan@chromium.org2009-06-111-0/+60
This is the beginning of the http pipelining work. Introduce HttpStream, an interface for reading and writing to http streams. Provide a basic implementation with HttpBasicStream. Switch HttpNetworkTransaction to reading/writing via HttpStream rather than directly to the socket. Note that the interface will have to change later on. Read/Write() is the wrong interface, since a pipelining HttpStream implementation will have to detect the end of an http response, rather than having the client (HttpNetworkTransaction) do that. This is just the first step. For information of the general roadmap for http pipelining, please refer to the bug. BUG=http://crbug.com/8991 TEST=none Review URL: http://codereview.chromium.org/119346 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@18199 0039d316-1c4b-4281-b951-d872f2087c98