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

Unified Diff: net/quic/core/quic_framer.cc

Issue 2547583002: Landing Recent QUIC changes until Fri Nov 18 23:21:04 2016 +0000 (Closed)
Patch Set: Remove explicit HTTP/2 enum usage Created 4 years 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/core/quic_framer.h ('k') | net/quic/core/quic_framer_test.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: net/quic/core/quic_framer.cc
diff --git a/net/quic/core/quic_framer.cc b/net/quic/core/quic_framer.cc
index e8b90f945007f865dd09f7ff3ffcf5561959039c..bdc6f8ceca5f47e885c89ecf10ee68d4cec6fe2f 100644
--- a/net/quic/core/quic_framer.cc
+++ b/net/quic/core/quic_framer.cc
@@ -35,6 +35,9 @@ namespace net {
namespace {
+#define ENDPOINT \
+ (perspective_ == Perspective::IS_SERVER ? "Server: " : "Client: ")
+
// Mask to select the lowest 48 bits of a packet number.
const QuicPacketNumber k6ByteSequenceNumberMask = UINT64_C(0x0000FFFFFFFFFFFF);
const QuicPacketNumber k4ByteSequenceNumberMask = UINT64_C(0x00000000FFFFFFFF);
@@ -305,19 +308,19 @@ size_t QuicFramer::GetSerializedFrameLength(
if (can_truncate) {
// Truncate the frame so the packet will not exceed kMaxPacketSize.
// Note that we may not use every byte of the writer in this case.
- DVLOG(1) << "Truncating large frame, free bytes: " << free_bytes;
+ DVLOG(1) << ENDPOINT
+ << "Truncating large frame, free bytes: " << free_bytes;
return free_bytes;
}
return 0;
}
-QuicFramer::NewAckFrameInfo::NewAckFrameInfo()
+QuicFramer::AckFrameInfo::AckFrameInfo()
: max_block_length(0), first_block_length(0), num_ack_blocks(0) {}
-QuicFramer::NewAckFrameInfo::NewAckFrameInfo(const NewAckFrameInfo& other) =
- default;
+QuicFramer::AckFrameInfo::AckFrameInfo(const AckFrameInfo& other) = default;
-QuicFramer::NewAckFrameInfo::~NewAckFrameInfo() {}
+QuicFramer::AckFrameInfo::~AckFrameInfo() {}
size_t QuicFramer::BuildDataPacket(const QuicPacketHeader& header,
const QuicFrames& frames,
@@ -350,8 +353,8 @@ size_t QuicFramer::BuildDataPacket(const QuicPacketHeader& header,
}
break;
case ACK_FRAME:
- if (!AppendNewAckFrameAndTypeByte(*frame.ack_frame, &writer)) {
- QUIC_BUG << "AppendNewAckFrameAndTypeByte failed";
+ if (!AppendAckFrameAndTypeByte(*frame.ack_frame, &writer)) {
+ QUIC_BUG << "AppendAckFrameAndTypeByte failed";
return 0;
}
break;
@@ -502,7 +505,9 @@ bool QuicFramer::ProcessPacket(const QuicEncryptedPacket& packet) {
// First parse the public header.
QuicPacketPublicHeader public_header;
if (!ProcessPublicHeader(&reader, &public_header)) {
- DVLOG(1) << "Unable to process public header.";
+ DCHECK_NE("", detailed_error_);
+ DVLOG(1) << ENDPOINT
+ << "Unable to process public header. Error: " << detailed_error_;
DCHECK_NE("", detailed_error_);
return RaiseError(QUIC_INVALID_PACKET_HEADER);
}
@@ -569,7 +574,10 @@ bool QuicFramer::ProcessDataPacket(QuicDataReader* encrypted_reader,
size_t buffer_length) {
QuicPacketHeader header(public_header);
if (!ProcessUnauthenticatedHeader(encrypted_reader, &header)) {
- DVLOG(1) << "Unable to process packet header. Stopping parsing.";
+ DCHECK_NE("", detailed_error_);
+ DVLOG(1) << ENDPOINT
+ << "Unable to process packet header. Stopping parsing. Error: "
+ << detailed_error_;
return false;
}
@@ -600,7 +608,9 @@ bool QuicFramer::ProcessDataPacket(QuicDataReader* encrypted_reader,
// Handle the payload.
if (!ProcessFrameData(&reader, header)) {
DCHECK_NE(QUIC_NO_ERROR, error_); // ProcessFrameData sets the error.
- DLOG(WARNING) << "Unable to process frame data.";
+ DCHECK_NE("", detailed_error_);
+ DLOG(WARNING) << ENDPOINT
+ << "Unable to process frame data. Error: " << detailed_error_;
return false;
}
@@ -645,7 +655,7 @@ bool QuicFramer::ProcessPublicResetPacket(
bool QuicFramer::AppendPacketHeader(const QuicPacketHeader& header,
QuicDataWriter* writer) {
- DVLOG(1) << "Appending header: " << header;
+ DVLOG(1) << ENDPOINT << "Appending header: " << header;
uint8_t public_flags = 0;
if (header.public_header.reset_flag) {
public_flags |= PACKET_PUBLIC_FLAGS_RST;
@@ -691,7 +701,7 @@ bool QuicFramer::AppendPacketHeader(const QuicPacketHeader& header,
DCHECK_EQ(Perspective::IS_CLIENT, perspective_);
QuicTag tag = QuicVersionToQuicTag(quic_version_);
writer->WriteUInt32(tag);
- DVLOG(1) << "version = " << quic_version_ << ", tag = '"
+ DVLOG(1) << ENDPOINT << "version = " << quic_version_ << ", tag = '"
<< QuicTagToString(tag) << "'";
}
@@ -917,9 +927,9 @@ uint8_t QuicFramer::GetSequenceNumberFlags(
}
// static
-QuicFramer::NewAckFrameInfo QuicFramer::GetNewAckFrameInfo(
+QuicFramer::AckFrameInfo QuicFramer::GetAckFrameInfo(
const QuicAckFrame& frame) {
- NewAckFrameInfo new_ack_info;
+ AckFrameInfo new_ack_info;
if (frame.packets.Empty()) {
return new_ack_info;
}
@@ -960,6 +970,7 @@ bool QuicFramer::ProcessUnauthenticatedHeader(QuicDataReader* encrypted_reader,
if (header->public_header.multipath_flag &&
!IsValidPath(header->path_id, &base_packet_number)) {
// Stop processing because path is closed.
+ set_detailed_error("Path is closed.");
return false;
}
@@ -976,6 +987,8 @@ bool QuicFramer::ProcessUnauthenticatedHeader(QuicDataReader* encrypted_reader,
}
if (!visitor_->OnUnauthenticatedHeader(*header)) {
+ set_detailed_error(
+ "Visitor asked to stop processing of unauthenticated header.");
return false;
}
return true;
@@ -1027,7 +1040,7 @@ bool QuicFramer::ProcessFrameData(QuicDataReader* reader,
return RaiseError(QUIC_INVALID_STREAM_DATA);
}
if (!visitor_->OnStreamFrame(frame)) {
- DVLOG(1) << "Visitor asked to stop further processing.";
+ DVLOG(1) << ENDPOINT << "Visitor asked to stop further processing.";
// Returning true since there was no parsing error.
return true;
}
@@ -1037,11 +1050,11 @@ bool QuicFramer::ProcessFrameData(QuicDataReader* reader,
// Ack Frame
if (frame_type & kQuicFrameTypeAckMask) {
QuicAckFrame frame;
- if (!ProcessNewAckFrame(reader, frame_type, &frame)) {
+ if (!ProcessAckFrame(reader, frame_type, &frame)) {
return RaiseError(QUIC_INVALID_ACK_DATA);
}
if (!visitor_->OnAckFrame(frame)) {
- DVLOG(1) << "Visitor asked to stop further processing.";
+ DVLOG(1) << ENDPOINT << "Visitor asked to stop further processing.";
// Returning true since there was no parsing error.
return true;
}
@@ -1051,7 +1064,8 @@ bool QuicFramer::ProcessFrameData(QuicDataReader* reader,
// This was a special frame type that did not match any
// of the known ones. Error.
set_detailed_error("Illegal frame type.");
- DLOG(WARNING) << "Illegal frame type: " << static_cast<int>(frame_type);
+ DLOG(WARNING) << ENDPOINT
+ << "Illegal frame type: " << static_cast<int>(frame_type);
return RaiseError(QUIC_INVALID_FRAME_DATA);
}
@@ -1085,7 +1099,7 @@ bool QuicFramer::ProcessFrameData(QuicDataReader* reader,
}
if (!visitor_->OnConnectionCloseFrame(frame)) {
- DVLOG(1) << "Visitor asked to stop further processing.";
+ DVLOG(1) << ENDPOINT << "Visitor asked to stop further processing.";
// Returning true since there was no parsing error.
return true;
}
@@ -1098,7 +1112,7 @@ bool QuicFramer::ProcessFrameData(QuicDataReader* reader,
return RaiseError(QUIC_INVALID_GOAWAY_DATA);
}
if (!visitor_->OnGoAwayFrame(goaway_frame)) {
- DVLOG(1) << "Visitor asked to stop further processing.";
+ DVLOG(1) << ENDPOINT << "Visitor asked to stop further processing.";
// Returning true since there was no parsing error.
return true;
}
@@ -1111,7 +1125,7 @@ bool QuicFramer::ProcessFrameData(QuicDataReader* reader,
return RaiseError(QUIC_INVALID_WINDOW_UPDATE_DATA);
}
if (!visitor_->OnWindowUpdateFrame(window_update_frame)) {
- DVLOG(1) << "Visitor asked to stop further processing.";
+ DVLOG(1) << ENDPOINT << "Visitor asked to stop further processing.";
// Returning true since there was no parsing error.
return true;
}
@@ -1124,7 +1138,7 @@ bool QuicFramer::ProcessFrameData(QuicDataReader* reader,
return RaiseError(QUIC_INVALID_BLOCKED_DATA);
}
if (!visitor_->OnBlockedFrame(blocked_frame)) {
- DVLOG(1) << "Visitor asked to stop further processing.";
+ DVLOG(1) << ENDPOINT << "Visitor asked to stop further processing.";
// Returning true since there was no parsing error.
return true;
}
@@ -1137,7 +1151,7 @@ bool QuicFramer::ProcessFrameData(QuicDataReader* reader,
return RaiseError(QUIC_INVALID_STOP_WAITING_DATA);
}
if (!visitor_->OnStopWaitingFrame(stop_waiting_frame)) {
- DVLOG(1) << "Visitor asked to stop further processing.";
+ DVLOG(1) << ENDPOINT << "Visitor asked to stop further processing.";
// Returning true since there was no parsing error.
return true;
}
@@ -1147,7 +1161,7 @@ bool QuicFramer::ProcessFrameData(QuicDataReader* reader,
// Ping has no payload.
QuicPingFrame ping_frame;
if (!visitor_->OnPingFrame(ping_frame)) {
- DVLOG(1) << "Visitor asked to stop further processing.";
+ DVLOG(1) << ENDPOINT << "Visitor asked to stop further processing.";
// Returning true since there was no parsing error.
return true;
}
@@ -1159,7 +1173,7 @@ bool QuicFramer::ProcessFrameData(QuicDataReader* reader,
return RaiseError(QUIC_INVALID_PATH_CLOSE_DATA);
}
if (!visitor_->OnPathCloseFrame(path_close_frame)) {
- DVLOG(1) << "Visitor asked to stop further processing.";
+ DVLOG(1) << ENDPOINT << "Visitor asked to stop further processing.";
// Returning true since there was no parsing error.
return true;
}
@@ -1168,7 +1182,8 @@ bool QuicFramer::ProcessFrameData(QuicDataReader* reader,
default:
set_detailed_error("Illegal frame type.");
- DLOG(WARNING) << "Illegal frame type: " << static_cast<int>(frame_type);
+ DLOG(WARNING) << ENDPOINT
+ << "Illegal frame type: " << static_cast<int>(frame_type);
return RaiseError(QUIC_INVALID_FRAME_DATA);
}
}
@@ -1231,9 +1246,9 @@ bool QuicFramer::ProcessStreamFrame(QuicDataReader* reader,
return true;
}
-bool QuicFramer::ProcessNewAckFrame(QuicDataReader* reader,
- uint8_t frame_type,
- QuicAckFrame* ack_frame) {
+bool QuicFramer::ProcessAckFrame(QuicDataReader* reader,
+ uint8_t frame_type,
+ QuicAckFrame* ack_frame) {
// Determine the two lengths from the frame type: largest acked length,
// ack block length.
const QuicPacketNumberLength ack_block_length =
@@ -1668,7 +1683,7 @@ bool QuicFramer::DecryptPayload(QuicDataReader* encrypted_reader,
}
if (!success) {
- DVLOG(1) << "DecryptPacket failed for packet_number:"
+ DVLOG(1) << ENDPOINT << "DecryptPacket failed for packet_number:"
<< header.packet_number;
return false;
}
@@ -1689,7 +1704,7 @@ size_t QuicFramer::GetAckFrameSize(
QuicPacketNumberLength packet_number_length) {
size_t ack_size = 0;
- NewAckFrameInfo ack_info = GetNewAckFrameInfo(ack);
+ AckFrameInfo ack_info = GetAckFrameInfo(ack);
QuicPacketNumberLength largest_acked_length =
GetMinSequenceNumberLength(ack.largest_observed);
QuicPacketNumberLength ack_block_length =
@@ -1867,9 +1882,9 @@ void QuicFramer::set_version(const QuicVersion version) {
quic_version_ = version;
}
-bool QuicFramer::AppendNewAckFrameAndTypeByte(const QuicAckFrame& frame,
- QuicDataWriter* writer) {
- const NewAckFrameInfo new_ack_info = GetNewAckFrameInfo(frame);
+bool QuicFramer::AppendAckFrameAndTypeByte(const QuicAckFrame& frame,
+ QuicDataWriter* writer) {
+ const AckFrameInfo new_ack_info = GetAckFrameInfo(frame);
QuicPacketNumber largest_acked = frame.largest_observed;
QuicPacketNumberLength largest_acked_length =
GetMinSequenceNumberLength(largest_acked);
@@ -2185,7 +2200,7 @@ bool QuicFramer::AppendPathCloseFrame(const QuicPathCloseFrame& frame,
}
bool QuicFramer::RaiseError(QuicErrorCode error) {
- DVLOG(1) << "Error: " << QuicErrorCodeToString(error)
+ DVLOG(1) << ENDPOINT << "Error: " << QuicErrorCodeToString(error)
<< " detail: " << detailed_error_;
set_error(error);
visitor_->OnError(this);
« no previous file with comments | « net/quic/core/quic_framer.h ('k') | net/quic/core/quic_framer_test.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698