Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(456)

Unified Diff: net/quic/quic_framer.cc

Issue 14816006: Land Recent QUIC changes (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Added missing NET_PRIVATE_EXPORT to QuicWallTime Created 7 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « net/quic/quic_framer.h ('k') | net/quic/quic_framer_test.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: net/quic/quic_framer.cc
diff --git a/net/quic/quic_framer.cc b/net/quic/quic_framer.cc
index 95c42b7105177d2aa2a37b8ed80397dd05a760b5..67a376ea6e61dc5879eb49b2e1df0fe3100a2c06 100644
--- a/net/quic/quic_framer.cc
+++ b/net/quic/quic_framer.cc
@@ -45,7 +45,7 @@ QuicPacketSequenceNumber ClosestTo(QuicPacketSequenceNumber target,
} // namespace
-QuicFramer::QuicFramer(QuicVersionTag version,
+QuicFramer::QuicFramer(QuicTag version,
QuicTime creation_time,
bool is_server)
: visitor_(NULL),
@@ -54,6 +54,7 @@ QuicFramer::QuicFramer(QuicVersionTag version,
last_sequence_number_(0),
quic_version_(version),
decrypter_(QuicDecrypter::Create(kNULL)),
+ alternative_decrypter_latch_(false),
is_server_(is_server),
creation_time_(creation_time) {
DCHECK(IsSupportedVersion(version));
@@ -101,7 +102,7 @@ size_t QuicFramer::GetMinGoAwayFrameSize() {
kQuicStreamIdSize;
}
-bool QuicFramer::IsSupportedVersion(QuicVersionTag version) {
+bool QuicFramer::IsSupportedVersion(QuicTag version) {
return version == kQuicVersion1;
}
@@ -288,7 +289,7 @@ QuicEncryptedPacket* QuicFramer::ConstructPublicResetPacket(
QuicEncryptedPacket* QuicFramer::ConstructVersionNegotiationPacket(
const QuicPacketPublicHeader& header,
- const QuicVersionTagList& supported_versions) {
+ const QuicTagVector& supported_versions) {
DCHECK(header.version_flag);
size_t len = GetVersionNegotiationPacketSize(supported_versions.size());
QuicDataWriter writer(len);
@@ -350,7 +351,7 @@ bool QuicFramer::ProcessVersionNegotiationPacket(
DCHECK(!is_server_);
// Try reading at least once to raise error if the packet is invalid.
do {
- QuicVersionTag version;
+ QuicTag version;
if (!reader_->ReadBytes(&version, kQuicVersionSize)) {
set_detailed_error("Unable to read supported version in negotiation.");
return RaiseError(QUIC_INVALID_VERSION_NEGOTIATION_PACKET);
@@ -553,7 +554,7 @@ bool QuicFramer::ProcessPublicHeader(QuicPacketPublicHeader* public_header) {
}
if (public_header->version_flag && is_server_) {
- QuicVersionTag version;
+ QuicTag version;
if (!reader_->ReadUInt32(&version)) {
// Read the version only if the packet is from the client.
// version flag from the server means version negotiation packet.
@@ -1068,6 +1069,18 @@ const QuicEncrypter* QuicFramer::encrypter(EncryptionLevel level) const {
return encrypter_[level].get();
}
+void QuicFramer::SwapCryptersForTest(QuicFramer* other) {
+ for (int i = ENCRYPTION_NONE; i < NUM_ENCRYPTION_LEVELS; i++) {
+ encrypter_[i].swap(other->encrypter_[i]);
+ }
+ decrypter_.swap(other->decrypter_);
+ alternative_decrypter_.swap(other->alternative_decrypter_);
+
+ const bool other_latch = other->alternative_decrypter_latch_;
+ other->alternative_decrypter_latch_ = alternative_decrypter_latch_;
+ alternative_decrypter_latch_ = other_latch;
+}
+
QuicEncryptedPacket* QuicFramer::EncryptPacket(
EncryptionLevel level,
QuicPacketSequenceNumber packet_sequence_number,
@@ -1116,26 +1129,21 @@ bool QuicFramer::DecryptPayload(QuicPacketSequenceNumber sequence_number,
return false;
}
DCHECK(decrypter_.get() != NULL);
- LOG(INFO) << "Decrypting packet";
decrypted_.reset(decrypter_->DecryptPacket(
sequence_number,
GetAssociatedDataFromEncryptedPacket(packet, version_flag),
encrypted));
if (decrypted_.get() == NULL && alternative_decrypter_.get() != NULL) {
- LOG(INFO) << "Trying alternative";
decrypted_.reset(alternative_decrypter_->DecryptPacket(
sequence_number,
GetAssociatedDataFromEncryptedPacket(packet, version_flag),
encrypted));
if (decrypted_.get() != NULL) {
- LOG(INFO) << "alternative ok";
if (alternative_decrypter_latch_) {
- LOG(INFO) << " latching";
// Switch to the alternative decrypter and latch so that we cannot
// switch back.
decrypter_.reset(alternative_decrypter_.release());
} else {
- LOG(INFO) << " swapping";
// Switch the alternative decrypter so that we use it first next time.
decrypter_.swap(alternative_decrypter_);
}
« no previous file with comments | « net/quic/quic_framer.h ('k') | net/quic/quic_framer_test.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698