summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--net/quic/quic_connection.h2
-rw-r--r--net/quic/quic_framer.cc17
-rw-r--r--net/quic/quic_framer.h3
3 files changed, 11 insertions, 11 deletions
diff --git a/net/quic/quic_connection.h b/net/quic/quic_connection.h
index dd009ae..c277589 100644
--- a/net/quic/quic_connection.h
+++ b/net/quic/quic_connection.h
@@ -27,7 +27,6 @@
#include "net/base/linked_hash_map.h"
#include "net/quic/congestion_control/quic_congestion_manager.h"
#include "net/quic/quic_blocked_writer_interface.h"
-#include "net/quic/quic_fec_group.h"
#include "net/quic/quic_framer.h"
#include "net/quic/quic_packet_creator.h"
#include "net/quic/quic_packet_entropy_manager.h"
@@ -38,7 +37,6 @@ namespace net {
class QuicClock;
class QuicConnection;
-class QuicEncrypter;
class QuicFecGroup;
class QuicRandom;
diff --git a/net/quic/quic_framer.cc b/net/quic/quic_framer.cc
index af8e4f9..2329605 100644
--- a/net/quic/quic_framer.cc
+++ b/net/quic/quic_framer.cc
@@ -278,7 +278,6 @@ bool QuicFramer::ProcessPacket(const QuicEncryptedPacket& packet) {
QuicPacketPublicHeader public_header;
if (!ProcessPublicHeader(&public_header)) {
DLOG(WARNING) << "Unable to process public header.";
- reader_.reset(NULL);
return RaiseError(QUIC_INVALID_PACKET_HEADER);
}
// TODO(satyamshekhar): Handle version negotiation.
@@ -304,11 +303,13 @@ bool QuicFramer::ProcessDataPacket(
QuicPacketHeader header(public_header);
if (!ProcessPacketHeader(&header, packet)) {
+ DCHECK_NE(QUIC_NO_ERROR, error_); // ProcessPacketHeader sets the error.
DLOG(WARNING) << "Unable to process data packet header.";
- return RaiseError(QUIC_INVALID_PACKET_HEADER);
+ return false;
}
if (!visitor_->OnPacketHeader(header)) {
+ // The visitor suppresses further processing of the packet.
return true;
}
@@ -501,30 +502,30 @@ bool QuicFramer::ProcessPacketHeader(
const QuicEncryptedPacket& packet) {
if (!ProcessPacketSequenceNumber(&header->packet_sequence_number)) {
set_detailed_error("Unable to read sequence number.");
- return false;
+ return RaiseError(QUIC_INVALID_PACKET_HEADER);
}
if (header->packet_sequence_number == 0u) {
set_detailed_error("Packet sequence numbers cannot be 0.");
- return false;
+ return RaiseError(QUIC_INVALID_PACKET_HEADER);
}
if (!DecryptPayload(header->packet_sequence_number,
header->public_header.version_flag,
packet)) {
- DLOG(WARNING) << "Unable to decrypt payload.";
+ set_detailed_error("Unable to decrypt payload.");
return RaiseError(QUIC_DECRYPTION_FAILURE);
}
uint8 private_flags;
if (!reader_->ReadBytes(&private_flags, 1)) {
set_detailed_error("Unable to read private flags.");
- return false;
+ return RaiseError(QUIC_INVALID_PACKET_HEADER);
}
if (private_flags > PACKET_PRIVATE_FLAGS_MAX) {
set_detailed_error("Illegal private flags value.");
- return false;
+ return RaiseError(QUIC_INVALID_PACKET_HEADER);
}
header->fec_flag = (private_flags & PACKET_PRIVATE_FLAGS_FEC) != 0;
@@ -535,7 +536,7 @@ bool QuicFramer::ProcessPacketHeader(
uint8 first_fec_protected_packet_offset;
if (!reader_->ReadBytes(&first_fec_protected_packet_offset, 1)) {
set_detailed_error("Unable to read first fec protected packet offset.");
- return false;
+ return RaiseError(QUIC_INVALID_PACKET_HEADER);
}
header->fec_group = first_fec_protected_packet_offset == kNoFecOffset ? 0 :
header->packet_sequence_number - first_fec_protected_packet_offset;
diff --git a/net/quic/quic_framer.h b/net/quic/quic_framer.h
index 008c99d..86b255d 100644
--- a/net/quic/quic_framer.h
+++ b/net/quic/quic_framer.h
@@ -70,7 +70,7 @@ class NET_EXPORT_PRIVATE QuicFramerVisitorInterface {
virtual void OnRevivedPacket() = 0;
// Called when the header of a packet had been parsed.
- // If OnPacketHeader returns false, framing for this packet will cease.
+ // If OnPacketHeader returns false, parsing for this packet will cease.
virtual bool OnPacketHeader(const QuicPacketHeader& header) = 0;
// Called when a data packet is parsed that is part of an FEC group.
@@ -334,6 +334,7 @@ class NET_EXPORT_PRIVATE QuicFramer {
QuicFecBuilderInterface* fec_builder_;
QuicReceivedEntropyHashCalculatorInterface* entropy_calculator_;
QuicErrorCode error_;
+ // Updated by ProcessPacketHeader when it succeeds.
QuicPacketSequenceNumber last_sequence_number_;
// Buffer containing decrypted payload data during parsing.
scoped_ptr<QuicData> decrypted_;