summaryrefslogtreecommitdiffstats
path: root/net/quic/crypto/proof_verifier_chromium.h
diff options
context:
space:
mode:
authorrtenneti@chromium.org <rtenneti@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-06-05 03:23:22 +0000
committerrtenneti@chromium.org <rtenneti@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-06-05 03:23:22 +0000
commit730b35d7591e690f7740a4adbd36c35890cacf7f (patch)
treee1654aa74e9be4633978c49611413fa367fbc499 /net/quic/crypto/proof_verifier_chromium.h
parent81b49cd7dfa640179eac2a253d948510d0787e18 (diff)
downloadchromium_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.h17
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;