diff options
author | rtenneti@chromium.org <rtenneti@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-06-05 03:23:22 +0000 |
---|---|---|
committer | rtenneti@chromium.org <rtenneti@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-06-05 03:23:22 +0000 |
commit | 730b35d7591e690f7740a4adbd36c35890cacf7f (patch) | |
tree | e1654aa74e9be4633978c49611413fa367fbc499 /net/quic/crypto/proof_verifier_chromium.h | |
parent | 81b49cd7dfa640179eac2a253d948510d0787e18 (diff) | |
download | chromium_src-730b35d7591e690f7740a4adbd36c35890cacf7f.zip chromium_src-730b35d7591e690f7740a4adbd36c35890cacf7f.tar.gz chromium_src-730b35d7591e690f7740a4adbd36c35890cacf7f.tar.bz2 |
Land Recent QUIC Changes.
Close the QUIC connection if we accidentally try to send too many bytes
and hit flow control send limits.
Also splits the error code QUIC_FLOW_CONTROL_ERROR into three errors
for more helpful tracking of error sources:
The peer received too much data, violating flow control.
QUIC_FLOW_CONTROL_RECEIVED_TOO_MUCH_DATA
The peer sent too much data, violating flow control.
QUIC_FLOW_CONTROL_SENT_TOO_MUCH_DATA
The peer received an invalid flow control window.
QUIC_FLOW_CONTROL_INVALID_WINDOW
QUIC: close the connection if we accidentally try to send too many
bytes and hit flow control send limits. Also adds more descriptive error
codes.
Merge internal change: 68490433
https://codereview.chromium.org/315713003/
Store a ptr to QuicConnection in QuicFlowController, rather than passing
it as an argument to various QuicFlowController methods. No behavior
change.
Merge internal change: 68489619
https://codereview.chromium.org/316643004/
Disable stream flow control if negotiated version is < QUIC_VERSION_17.
This protectes against the following:
1) client attempts 0RTT with QUIC_VERSION_18.
2) server only speaks QUIC_VERSION_16
3) client switches to QUIC_VERSION_16 but keeps doing stream flow
control, while the server does not.
This should never be something that happens as Chrome only ever speaks
one version of QUIC at a time.
QUIC: disable stream flow control if negotiated version is <
QUIC_VERSION_17.
Merge internal change: 68488680
https://codereview.chromium.org/312883003/
Check for flow control violation sooner when processing new frame. This
means we don't waste time trying to read/process the contents of a frame
which is invalid, and we remove the risk of bytes_consumed being >
receive_window_offset.
Prior to this change, we checked for flow control violation *after* the
sequencer processed the frame, and if it arrived in order (but with too
much data for flow control) it would still be consumed before we close
the connection.
QUIC: check for flow control violation sooner when processing new
frame.
Merge internal change: 68478945
https://codereview.chromium.org/310213002/
As promised in cl/68185060 (https://codereview.chromium.org/308363002/),
move the call to MaybeSendWindowUpdate inside
QuicFlowController::AddBytesConsumed. Users always want to call both of
these, so make it impossible to forget.
Move the call to MaybeSendWindowUpdate inside
QuicFlowController::AddBytesConsumed
Merge internal change: 68477157
https://codereview.chromium.org/311933003/
Make QUIC SendAlgorithmInterface's TimeUntilSend const to ensure
TimeUntilSend can be invoked multiple times and return the same result.
Merge internal change: 68456011
https://codereview.chromium.org/312763003/
Always use "ConvertIPv4NumberToIPv6Number" of addresses when
constructing and verifying QUIC source address tokens. This is to fix a
low rate of source address token verifications due to the normalized and
"ConvertIPv4NumberToIPv6Number" version of the same ipv4 addresses
looking different.
Use "ConvertIPv4NumberToIPv6Number" of ipv4 addresses when computing and
verifying QUIC source address tokens. Not flag protected.
Merge internal change: 68409604
https://codereview.chromium.org/310153002/
QUIC: Change the tag_vector parameter of ContainsQuicTag to be a const
reference.
Merge internal change: 68399425
https://codereview.chromium.org/304273012/
Refactor to move comments and flip an if in QUIC's PacingSender in order
to improve readability.
Merge internal change: 68398155
https://codereview.chromium.org/311723002/
Export QUIC spurious retransmit counts by transmit type to varz. Not
flag protected.
Merge internal change: 68397671
https://codereview.chromium.org/315453002/
Remove QUIC's PacedSender, a test-only class used in FixRateSender,
another test-only class.
Merge internal change: 68374544
https://codereview.chromium.org/309183002/
When closing a QUIC stream, mark all unconsumed bytes as consumed. This
includes all bytes currently buffered in the sequencer. If a stream has
consumed N bytes, and has a highest received byte offset of M bytes,
then on close it marks as consumed an additional M-N bytes. This ensures
that the endpoints have consistent connection level flow control state.
QUIC: when closing a stream, mark all bytes between highest consumed
byte and highest byte offset as consumed, for consistent connection
level flow control state.
Merge internal change: 68270210
https://codereview.chromium.org/302373003/
Add quic_types.h and move the typedefs unrelated to the QUIC protocol
specification from quic_protocol.h to quic_types.h.
Add the QuicAsyncStatus enum type (to quic_types.h), which represents
the return status of asynchronous operations. Replace
ProofVerifier::Status with QuicAsyncStatus.
Moved typedefs unrelated to the QUIC protocol specification from
quic_protocol.h to the new quic_types.h header. Replaced
ProofVerifier::Status with the new general-purpose QuicAsyncStatus enum
type.
Merge internal change: 68267420
https://codereview.chromium.org/309013006/
R=rch@chromium.org
Review URL: https://codereview.chromium.org/312803005
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@274994 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'net/quic/crypto/proof_verifier_chromium.h')
-rw-r--r-- | net/quic/crypto/proof_verifier_chromium.h | 17 |
1 files changed, 9 insertions, 8 deletions
diff --git a/net/quic/crypto/proof_verifier_chromium.h b/net/quic/crypto/proof_verifier_chromium.h index ebf9a2c..6f8a231 100644 --- a/net/quic/crypto/proof_verifier_chromium.h +++ b/net/quic/crypto/proof_verifier_chromium.h @@ -48,14 +48,15 @@ class NET_EXPORT_PRIVATE ProofVerifierChromium : public ProofVerifier { virtual ~ProofVerifierChromium(); // ProofVerifier interface - virtual Status VerifyProof(const std::string& hostname, - const std::string& server_config, - const std::vector<std::string>& certs, - const std::string& signature, - const ProofVerifyContext* verify_context, - std::string* error_details, - scoped_ptr<ProofVerifyDetails>* verify_details, - ProofVerifierCallback* callback) OVERRIDE; + virtual QuicAsyncStatus VerifyProof( + const std::string& hostname, + const std::string& server_config, + const std::vector<std::string>& certs, + const std::string& signature, + const ProofVerifyContext* verify_context, + std::string* error_details, + scoped_ptr<ProofVerifyDetails>* verify_details, + ProofVerifierCallback* callback) OVERRIDE; private: class Job; |