summaryrefslogtreecommitdiffstats
path: root/net/http/http_stream_parser.cc
Commit message (Collapse)AuthorAgeFilesLines
* Change the way request headers are logged to the NetLog to ensurerch@chromium.org2010-11-111-2/+12
| | | | | | | | | | | | | | | | | | 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
* Convert implicit scoped_refptr constructor calls to explicit ones, part 1thakis@chromium.org2010-11-011-1/+1
| | | | | | | | | | | 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
* Allow duplicate Content-Length headers.willchan@chromium.org2010-10-291-5/+12
| | | | | | | | | BUG=56344,59077 TEST=new tests in HttpNetworkTransactionTest Review URL: http://codereview.chromium.org/4192011 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@64513 0039d316-1c4b-4281-b951-d872f2087c98
* Move Stats, histograms, and field trial into a metrics subdirectory of base andbrettw@chromium.org2010-10-141-1/+1
| | | | | | | | | put them in the base namespace. TEST=it compiles BUG=none git-svn-id: svn://svn.chromium.org/chrome/trunk/src@62510 0039d316-1c4b-4281-b951-d872f2087c98
* Call GetSSLInfo late, after we have received the responsewtc@chromium.org2010-09-301-6/+2
| | | | | | | | | | | | | | | | | | | | headers. This is where we used to call GetSSLInfo. In r56646 (Chrome 7.0) we changed to call GetSSLInfo as soon as SSL Connect completes. This will be problematic when we do "pseudo connect" with SSL Snap Start. Allow HttpStreamParser::GetSSLInfo and HttpStreamParser::GetSSLCertRequestInfo to be called when connection_->socket() is not connected. R=agl,mbelshe BUG=none TEST=net_unittests --gtest_filter=HTTPSRequestTest.HTTPS*Test. For manual testing, verify the info in the Page Security Information dialog is correct. Review URL: http://codereview.chromium.org/3603002 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@61073 0039d316-1c4b-4281-b951-d872f2087c98
* Support net::ERR_RESPONSE_HEADERS_MULTIPLE_CONTENT_LENGTH.willchan@chromium.org2010-09-231-4/+29
| | | | | | | | | | | | | If we encounter multiple Content-Length headers without a Transfer-Encoding header, then it's a potential response smuggling attempt. Return an error. BUG=56344 TEST=HttpNetworkTransactionTest.MultipleContentLengthHeadersNoTransferEncoding,HttpNetworkTransactionTest.MultipleContentLengthHeadersTransferEncoding Review URL: http://codereview.chromium.org/3394016 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@60317 0039d316-1c4b-4281-b951-d872f2087c98
* Fix a crash where we are checking IsConnected(). If you look into the mbelshe@chromium.org2010-08-251-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | implementation of IsConnected() on windows, you'll find that it can synchronously check if the socket is connected. This makes it so that a CHECK (or DCHECK) on this attribute is dependent on the peer. The peer could send us a TCP-FIN at any time - even 1 nanosecond before our call to IsConnected(). We can only use CHECK(!IsConnected()) to check before we connect, we simply can't use it at runtime. I searched the code and found 4 other instances of this broken check. Most were DCHECKs, which is good, but I've removed them just the same. Turns out our MockSockets have a mechanism for simulating this error, but it wasn't tested nor plumbed through the MockSSLClientSocket. In the process I added a couple of basic proxy test cases, which may be slightly redundant with other test cases that are more advanced. But they seem like a good idea to cover anyway. Added 6 tests in total. BUG=53099 TEST=ProxyTunnelGetHangup, RecycleDeadSSLSocket Review URL: http://codereview.chromium.org/3107036 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@57295 0039d316-1c4b-4281-b951-d872f2087c98
* Extract connection logic from HttpNetworkTransaction into a newmbelshe@chromium.org2010-08-191-1/+41
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
* FBTF: Start cleaning up net/erg@google.com2010-08-111-0/+3
| | | | | | | | | | | | url_request.h and http_response_info.h are some of the most included headers from net/ in chrome. Do what forward declaration we can in those headers. BUG=none TEST=none Review URL: http://codereview.chromium.org/3150003 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@55780 0039d316-1c4b-4281-b951-d872f2087c98
* I've refactored HttpStream, SpdyHttpStream and HttpBasicStream so thatrch@chromium.org2010-07-291-4/+3
| | | | | | | | | | | | 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
* Reduce static initializers by removing inline constructors anddavemoore@chromium.org2010-07-211-0/+2
| | | | | | | | | | | destructors from classes with instance members of type scoped_ptr_malloc<> Also remove #include of iostream from remaining header file. Review URL: http://codereview.chromium.org/2861065 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@53190 0039d316-1c4b-4281-b951-d872f2087c98
* Remove the TRACE_EVENT for network states. This is no longer needed, since ↵eroman@chromium.org2010-05-211-9/+0
| | | | | | | | most of these states are captured by the NetLog. Review URL: http://codereview.chromium.org/2105013 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@47878 0039d316-1c4b-4281-b951-d872f2087c98
* Auto-format style pass over files.cbentzel@chromium.org2010-05-041-3/+3
| | | | | | | | | | | This is a refactor (actually reformat) only - no behavior change in place. BUG=NONE TEST=net_unittests.exe Review URL: http://codereview.chromium.org/1800003 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@46349 0039d316-1c4b-4281-b951-d872f2087c98
* More cleanup to address TODOs in net_log.h.eroman@chromium.org2010-04-281-2/+2
| | | | | | | | | | | * Removes 9 methods: AddEventWithParameters, BeginEventWithParameters, EndEventWithParameters, BeginEventWithString, BeginEventWithInteger, AddEventWithString, AddEventWithInteger, EndEventWithParameters, EndEventWithInteger. This was becoming ridiculous, instead made the EventParameters* a required parameter. * Moves CapturingBoundNetLog / CapturingNetLog to its own file. BUG=37421 Review URL: http://codereview.chromium.org/1746012 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@45843 0039d316-1c4b-4281-b951-d872f2087c98
* Remove packet split experiment, and add coalescing histogramjar@chromium.org2010-03-311-22/+28
| | | | | | | | | | | | | | | | The effort to split the packet proved to not work (presumably showing that the RTO was reasonably set by a SYN packet reception). The test did show that splitting the first packet had a negative consequence, and so the question is: How often can we coalesce 2 packets in a request into 1 packet? The most common cause would be a login, using a POST method to send a body, where the body is small. This change creates a histogram to show percentages of requests that can be coalesced. r=wtc Review URL: http://codereview.chromium.org/1539003 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@43180 0039d316-1c4b-4281-b951-d872f2087c98
* Remove bug 31096 checks (resolved).vandebo@chromium.org2010-03-301-3/+0
| | | | | | | | | TEST=none BUG=31096 Review URL: http://codereview.chromium.org/1562003 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@43145 0039d316-1c4b-4281-b951-d872f2087c98
* 2 experiments: DNS prefetch limit concurrency: TCP split a packetjar@chromium.org2010-03-201-3/+26
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Some firewalls apparently try to preclude a "syn flood to host" by limiting the number of syn's (used to open a TCP/IP socket) that are outstanding without having received a syn-ack. Presumably this is to prevent a user from participating in a syn-flood attack (which traditional sends a lot of syn packets, with false return addresses, resulting in no responses). Apparently this firewall technology has in some cases been extended to include UDP sessions for which there has been no response, and this may include DNS resolutions. Since the prefetcher currently resolves as many as 8 names simultaneously, this is remarkably close to the reported threshold of 10 un-answered connections. This test attempts to limit connections to 2, 4, or 6, so that we can see if this helps users. In TCP, the RTO remains (under windows) at a full 3 seconds until after the first ack is received. As a result, if the first data packet sent (after the SYN) is lost, then TCP won't resend until after 3 seconds without an ack. As a test, we split up the first packet into two parts (the second part containing only one byte). This is done as an A/B test, and we'll see if we get a measurable improvement in page-load-time latency. Finally, to get better page load stats, I adjusted the PLT histograms so that we record a "final" time for abandoned pages when they are closed (even if they didn't finish rendering, etc.). This should give a much more fair PLT comparison for all network latency experiments. BUG=3041 BUG=12754 r=mbelshe,darin Review URL: http://codereview.chromium.org/1088002 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@42181 0039d316-1c4b-4281-b951-d872f2087c98
* Generalize the net module's LoadLog facility from a passive container, to an ↵eroman@chromium.org2010-03-161-6/+4
| | | | | | | | | | | | | | | | 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
* Use 0 for successful end of stream.vandebo@chromium.org2010-03-081-3/+7
| | | | | | | | | 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 checks to track down bug 31096vandebo@chromium.org2010-03-081-0/+3
| | | | | | | | | BUG=31096 TEST=none Review URL: http://codereview.chromium.org/669226 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@40934 0039d316-1c4b-4281-b951-d872f2087c98
* Use CHECK_* in netwillchan@chromium.org2010-03-021-3/+3
| | | | | | Review URL: http://codereview.chromium.org/660404 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@40453 0039d316-1c4b-4281-b951-d872f2087c98
* Work around 3rd party problem causing bug 27870.vandebo@chromium.org2010-02-271-6/+1
| | | | | | | | | | | | Check that we report that we wrote no more than we requested to write. Remove some debugging. BUG=27870 TEST=none Review URL: http://codereview.chromium.org/660194 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@40197 0039d316-1c4b-4281-b951-d872f2087c98
* Add ERR_END_OF_STREAMvandebo@google.com2010-02-241-1/+1
| | | | | | | | | | | | 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
* More checks to try to find bug 27870.vandebo@google.com2010-02-121-1/+6
| | | | | | | | | BUG=27870 TEST=none Review URL: http://codereview.chromium.org/604022 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@38857 0039d316-1c4b-4281-b951-d872f2087c98
* Add a notion of 'eof' to UploadDataStream, replacing the use of its size ↵vandebo@google.com2010-02-041-2/+2
| | | | | | | | | | | | | | | property for detecting when an upload is finished. While this does prevent the crash described in the bug from occurring, this doesn't fully solve the problem as now the affected uploads don't complete. Fully resolving the issue will require implementing the chunked transfer encoding for requests. Patch from Vernon Tang <vt@foilhead.net>, original review: http://codereview.chromium.org/555194 BUG=33501 TEST=Create a file with a non-zero size and select that file in an HTML-based uploader. Before starting the upload, remove read permissions from that file. Check that the upload doesn't cause the browser to crash or hang. net_unittests: HttpNetworkTransactionTest.UploadFileSmallerThanLength, UploadDataStreamTest.* Review URL: http://codereview.chromium.org/578004 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@38129 0039d316-1c4b-4281-b951-d872f2087c98
* A 1xx response code followed by an EOF triggered an infinite loop. Fix the ↵vandebo@chromium.org2010-01-071-1/+6
| | | | | | | | | | | problem and add a regression test. BUG=31324 TEST=new net unittest Review URL: http://codereview.chromium.org/523075 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@35680 0039d316-1c4b-4281-b951-d872f2087c98
* Add more load log points near HttpNetworkTransaction::ReadHeadersvandebo@chromium.org2009-12-171-1/+7
| | | | | | | | | TEST=none BUG=27324 Review URL: http://codereview.chromium.org/501034 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@34853 0039d316-1c4b-4281-b951-d872f2087c98
* Make the transactions own the HttpResponseInfo.willchan@chromium.org2009-12-161-10/+13
| | | | | | | | 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-2/+2
| | | | | | | | | 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
* Try to find the cause of the crash in memcpy, called from DoSendBody.vandebo@chromium.org2009-11-191-2/+3
| | | | | | | | | BUG=27870 TEST=none Review URL: http://codereview.chromium.org/404034 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@32544 0039d316-1c4b-4281-b951-d872f2087c98
* Fix crash if we get an EOF after a large packet with unterminated headers.cevans@chromium.org2009-11-131-1/+1
| | | | | | | | | | | Make sure we always start copying excess data to the start of the read buffer, even in the case where save_amount==0 and additional_save_amount!=0 BUG=27509 TEST=NONE Review URL: http://codereview.chromium.org/385088 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@31939 0039d316-1c4b-4281-b951-d872f2087c98
* Map a return value of 0 to ERR_CONNECTION_CLOSED forwtc@chromium.org2009-11-121-19/+16
| | | | | | | | | | | | | connection_->socket()->Read() in DoReadHeadersComplete and DoReadBodyComplete so that we catch both synchronous and asynchronous completion of Read. R=vandebo BUG=13289 TEST=none Review URL: http://codereview.chromium.org/384047 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@31739 0039d316-1c4b-4281-b951-d872f2087c98
* After further discussion, do not try to handle memory errors, but make ↵vandebo@chromium.org2009-11-101-13/+5
| | | | | | | | | | | assertions about allocation parameters stronger. BUG=25826 TEST=none Review URL: http://codereview.chromium.org/378037 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@31574 0039d316-1c4b-4281-b951-d872f2087c98
* Handle out of memory in GrowableIOBuffer more gracefully.vandebo@chromium.org2009-10-281-7/+17
| | | | | | | | | BUG=25826 TEST=none Review URL: http://codereview.chromium.org/338049 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@30287 0039d316-1c4b-4281-b951-d872f2087c98
* Simplify the copying of data in HttpStreamParservandebo@chromium.org2009-10-231-17/+25
| | | | | | | | | | | Add a CHECK BUG=25554 TEST=none Review URL: http://codereview.chromium.org/327005 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@29956 0039d316-1c4b-4281-b951-d872f2087c98
* Refactor HttpNetworkTransaction so that HttpStream is responsible for ↵vandebo@chromium.org2009-10-171-0/+512
| | | | | | | | | | | | | 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-512/+0
| | | | | | 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-0/+512
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