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

Unified Diff: net/quic/quic_protocol.cc

Issue 15937012: Land Recent QUIC changes. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Small bug fixes 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
Index: net/quic/quic_protocol.cc
diff --git a/net/quic/quic_protocol.cc b/net/quic/quic_protocol.cc
index 4c0c88c9aac5a4896672901046f8d6e73e9c911e..2293076fa7c3bda4203b248bba0cd36607793aba 100644
--- a/net/quic/quic_protocol.cc
+++ b/net/quic/quic_protocol.cc
@@ -13,24 +13,35 @@ using std::string;
namespace net {
-size_t GetPacketHeaderSize(bool include_version) {
- return kPublicFlagsSize + kQuicGuidSize +
+size_t GetPacketHeaderSize(QuicPacketHeader header) {
+ return GetPacketHeaderSize(header.public_header.guid_length,
+ header.public_header.version_flag,
+ header.is_in_fec_group);
+}
+
+size_t GetPacketHeaderSize(QuicGuidLength guid_length,
+ bool include_version,
+ InFecGroup is_in_fec_group) {
+ return kPublicFlagsSize + guid_length +
(include_version ? kQuicVersionSize : 0) + kSequenceNumberSize +
- kPrivateFlagsSize + kFecGroupSize;
+ kPrivateFlagsSize + (is_in_fec_group == IN_FEC_GROUP ? kFecGroupSize : 0);
}
size_t GetPublicResetPacketSize() {
- return kPublicFlagsSize + kQuicGuidSize + kPublicResetNonceSize +
+ return kPublicFlagsSize + PACKET_8BYTE_GUID + kPublicResetNonceSize +
kSequenceNumberSize;
}
-size_t GetStartOfFecProtectedData(bool include_version) {
- return GetPacketHeaderSize(include_version);
+size_t GetStartOfFecProtectedData(QuicGuidLength guid_length,
+ bool include_version) {
+ return GetPacketHeaderSize(guid_length, include_version, IN_FEC_GROUP);
}
-size_t GetStartOfEncryptedData(bool include_version) {
- return GetPacketHeaderSize(include_version) - kPrivateFlagsSize -
- kFecGroupSize;
+size_t GetStartOfEncryptedData(QuicGuidLength guid_length,
+ bool include_version) {
+ // Don't include the fec size, since encryption starts before private flags.
+ return GetPacketHeaderSize(guid_length, include_version, NOT_IN_FEC_GROUP) -
+ kPrivateFlagsSize;
}
uint32 MakeQuicTag(char a, char b, char c, char d) {
@@ -42,6 +53,7 @@ uint32 MakeQuicTag(char a, char b, char c, char d) {
QuicPacketPublicHeader::QuicPacketPublicHeader()
: guid(0),
+ guid_length(PACKET_8BYTE_GUID),
reset_flag(false),
version_flag(false) {
}
@@ -49,6 +61,7 @@ QuicPacketPublicHeader::QuicPacketPublicHeader()
QuicPacketPublicHeader::QuicPacketPublicHeader(
const QuicPacketPublicHeader& other)
: guid(other.guid),
+ guid_length(other.guid_length),
reset_flag(other.reset_flag),
version_flag(other.version_flag),
versions(other.versions) {
@@ -67,20 +80,20 @@ QuicPacketPublicHeader& QuicPacketPublicHeader::operator=(
QuicPacketHeader::QuicPacketHeader()
: fec_flag(false),
- fec_entropy_flag(false),
entropy_flag(false),
entropy_hash(0),
packet_sequence_number(0),
+ is_in_fec_group(NOT_IN_FEC_GROUP),
fec_group(0) {
}
QuicPacketHeader::QuicPacketHeader(const QuicPacketPublicHeader& header)
: public_header(header),
fec_flag(false),
- fec_entropy_flag(false),
entropy_flag(false),
entropy_hash(0),
packet_sequence_number(0),
+ is_in_fec_group(NOT_IN_FEC_GROUP),
fec_group(0) {
}
@@ -98,6 +111,7 @@ QuicStreamFrame::QuicStreamFrame(QuicStreamId stream_id,
ostream& operator<<(ostream& os, const QuicPacketHeader& header) {
os << "{ guid: " << header.public_header.guid
+ << ", guid_length:" << header.public_header.guid_length
<< ", reset_flag: " << header.public_header.reset_flag
<< ", version_flag: " << header.public_header.version_flag;
if (header.public_header.version_flag) {
@@ -110,6 +124,7 @@ ostream& operator<<(ostream& os, const QuicPacketHeader& header) {
<< ", entropy_flag: " << header.entropy_flag
<< ", entropy hash: " << static_cast<int>(header.entropy_hash)
<< ", sequence_number: " << header.packet_sequence_number
+ << ", is_in_fec_group:" << header.is_in_fec_group
<< ", fec_group: " << header.fec_group<< "}\n";
return os;
}
@@ -253,23 +268,25 @@ QuicData::~QuicData() {
}
StringPiece QuicPacket::FecProtectedData() const {
- const size_t start_of_fec = GetStartOfFecProtectedData(includes_version_);
+ const size_t start_of_fec = GetStartOfFecProtectedData(guid_length_,
+ includes_version_);
return StringPiece(data() + start_of_fec, length() - start_of_fec);
}
StringPiece QuicPacket::AssociatedData() const {
return StringPiece(data() + kStartOfHashData,
- GetStartOfEncryptedData(includes_version_) -
+ GetStartOfEncryptedData(guid_length_, includes_version_) -
kStartOfHashData);
}
StringPiece QuicPacket::BeforePlaintext() const {
- return StringPiece(data(), GetStartOfEncryptedData(includes_version_));
+ return StringPiece(data(), GetStartOfEncryptedData(guid_length_,
+ includes_version_));
}
StringPiece QuicPacket::Plaintext() const {
const size_t start_of_encrypted_data =
- GetStartOfEncryptedData(includes_version_);
+ GetStartOfEncryptedData(guid_length_, includes_version_);
return StringPiece(data() + start_of_encrypted_data,
length() - start_of_encrypted_data);
}

Powered by Google App Engine
This is Rietveld 408576698