commit | 620095a9b809a89adf7581fa46ace03d221c98c1 | [log] [tgz] |
---|---|---|
author | bnc <bnc@google.com> | Wed Jun 26 05:31:05 2019 -0700 |
committer | Copybara-Service <copybara-worker@google.com> | Wed Jun 26 10:33:44 2019 -0700 |
tree | 75aea260611a39379af3009399343f01e29af286 | |
parent | 6d2aea061f8d756db70d4a3e74491c17a43571cf [diff] |
Do not call HttpDecoder::ProcessInput after error. This CL changes API contract and call sites. Without the change to the call sites, //gfe/gfe2/test_tools/fuzzing:gfe_quic_fuzzer would crash on the new DCHECK_NE(QUIC_NO_ERROR, error_). This is because even if Visitor::OnError() closes the connection, the sequencer might have more data that QuicSpdyStream is eager to read and feed to HttpDecoder::ProcessInput(). Currently HttpDecoder::ProcessInput() ignores input upon error. However, I'm going to modify the call sites to use PeekRegion() instead of PrefetchNextRegion() and spin until decoding is paused by a visitor method or no new region is there to peek at. Since HttpDecoder::ProcessInput() returns 0 if called after an error, this would just result in PeekRegion() being called with the same offset, returning true, and the cycle spinning in an infinite loop. gfe-relnote: n/a, change to QUIC v99-only code path. PiperOrigin-RevId: 255168809 Change-Id: I6b6f0b0986f2f6bec0a8eedb695dc91943d57bf2
QUICHE (QUIC, Http/2, Etc) is Google‘s implementation of QUIC and related protocols. It powers Chromium as well as Google’s QUIC servers and some other projects.
The code is currently in process of being moved from https://cs.chromium.org/chromium/src/net/third_party/ into this repository. Please excuse our appearance while we're under construction.