| Index: net/tools/quic/quic_time_wait_list_manager.cc
|
| diff --git a/net/tools/quic/quic_time_wait_list_manager.cc b/net/tools/quic/quic_time_wait_list_manager.cc
|
| index 31c386cf060ca9727f5f0448d999e8292e5c1c5a..962dfa3cd302228c80ddc3ffa714466f3e96e637 100644
|
| --- a/net/tools/quic/quic_time_wait_list_manager.cc
|
| +++ b/net/tools/quic/quic_time_wait_list_manager.cc
|
| @@ -95,16 +95,12 @@ QuicTimeWaitListManager::QuicTimeWaitListManager(
|
| QuicPacketWriter* writer,
|
| EpollServer* epoll_server,
|
| const QuicVersionVector& supported_versions)
|
| - : framer_(supported_versions,
|
| - QuicTime::Zero(), // unused
|
| - true),
|
| - epoll_server_(epoll_server),
|
| + : epoll_server_(epoll_server),
|
| kTimeWaitPeriod_(QuicTime::Delta::FromSeconds(kTimeWaitSeconds)),
|
| guid_clean_up_alarm_(new GuidCleanUpAlarm(this)),
|
| - clock_(epoll_server),
|
| + clock_(epoll_server_),
|
| writer_(writer),
|
| is_write_blocked_(false) {
|
| - framer_.set_visitor(this);
|
| SetGuidCleanUpAlarm();
|
| }
|
|
|
| @@ -127,28 +123,13 @@ void QuicTimeWaitListManager::AddGuidToTimeWait(
|
| guid_map_.insert(make_pair(guid, data));
|
| time_ordered_guid_list_.push_back(new GuidAddTime(guid,
|
| clock_.ApproximateNow()));
|
| + DCHECK(IsGuidInTimeWait(guid));
|
| }
|
|
|
| bool QuicTimeWaitListManager::IsGuidInTimeWait(QuicGuid guid) const {
|
| return guid_map_.find(guid) != guid_map_.end();
|
| }
|
|
|
| -void QuicTimeWaitListManager::ProcessPacket(
|
| - const IPEndPoint& server_address,
|
| - const IPEndPoint& client_address,
|
| - QuicGuid guid,
|
| - const QuicEncryptedPacket& packet) {
|
| - DCHECK(IsGuidInTimeWait(guid));
|
| - server_address_ = server_address;
|
| - client_address_ = client_address;
|
| -
|
| - // Set the framer to the appropriate version for this GUID, before processing.
|
| - QuicVersion version = GetQuicVersionFromGuid(guid);
|
| - framer_.set_version(version);
|
| -
|
| - framer_.ProcessPacket(packet);
|
| -}
|
| -
|
| QuicVersion QuicTimeWaitListManager::GetQuicVersionFromGuid(QuicGuid guid) {
|
| GuidMapIterator it = guid_map_.find(guid);
|
| DCHECK(it != guid_map_.end());
|
| @@ -169,99 +150,31 @@ bool QuicTimeWaitListManager::OnCanWrite() {
|
| return !is_write_blocked_;
|
| }
|
|
|
| -void QuicTimeWaitListManager::OnError(QuicFramer* framer) {
|
| - DLOG(INFO) << QuicUtils::ErrorToString(framer->error());
|
| -}
|
| -
|
| -bool QuicTimeWaitListManager::OnProtocolVersionMismatch(
|
| - QuicVersion received_version) {
|
| - if (!framer_.IsSupportedVersion(received_version)) {
|
| - // Drop such packets whose version don't match.
|
| - return false;
|
| - }
|
| - // Allow the framer to continue processing this packet.
|
| - framer_.set_version(received_version);
|
| - return true;
|
| -}
|
| -
|
| -bool QuicTimeWaitListManager::OnUnauthenticatedHeader(
|
| - const QuicPacketHeader& header) {
|
| +void QuicTimeWaitListManager::ProcessPacket(
|
| + const IPEndPoint& server_address,
|
| + const IPEndPoint& client_address,
|
| + QuicGuid guid,
|
| + QuicPacketSequenceNumber sequence_number) {
|
| + DCHECK(IsGuidInTimeWait(guid));
|
| // TODO(satyamshekhar): Think about handling packets from different client
|
| // addresses.
|
| - GuidMapIterator it = guid_map_.find(header.public_header.guid);
|
| + GuidMapIterator it = guid_map_.find(guid);
|
| DCHECK(it != guid_map_.end());
|
| // Increment the received packet count.
|
| ++((it->second).num_packets);
|
| if (!ShouldSendResponse((it->second).num_packets)) {
|
| - return false;
|
| + return;
|
| }
|
| if (it->second.close_packet) {
|
| QueuedPacket* queued_packet =
|
| - new QueuedPacket(server_address_,
|
| - client_address_,
|
| + new QueuedPacket(server_address,
|
| + client_address,
|
| it->second.close_packet->Clone());
|
| // Takes ownership of the packet.
|
| SendOrQueuePacket(queued_packet);
|
| } else {
|
| - // We don't need the packet anymore. Just tell the client what sequence
|
| - // number we rejected.
|
| - SendPublicReset(server_address_,
|
| - client_address_,
|
| - header.public_header.guid,
|
| - header.packet_sequence_number);
|
| + SendPublicReset(server_address, client_address, guid, sequence_number);
|
| }
|
| - // Never process the body of the packet in time wait state.
|
| - return false;
|
| -}
|
| -
|
| -bool QuicTimeWaitListManager::OnPacketHeader(const QuicPacketHeader& header) {
|
| - DCHECK(false);
|
| - return false;
|
| -}
|
| -
|
| -void QuicTimeWaitListManager::OnRevivedPacket() {
|
| - DCHECK(false);
|
| -}
|
| -
|
| -void QuicTimeWaitListManager::OnFecProtectedPayload(StringPiece /*payload*/) {
|
| - DCHECK(false);
|
| -}
|
| -
|
| -bool QuicTimeWaitListManager::OnStreamFrame(const QuicStreamFrame& /*frame*/) {
|
| - DCHECK(false);
|
| - return false;
|
| -}
|
| -
|
| -bool QuicTimeWaitListManager::OnAckFrame(const QuicAckFrame& /*frame*/) {
|
| - DCHECK(false);
|
| - return false;
|
| -}
|
| -
|
| -bool QuicTimeWaitListManager::OnCongestionFeedbackFrame(
|
| - const QuicCongestionFeedbackFrame& /*frame*/) {
|
| - DCHECK(false);
|
| - return false;
|
| -}
|
| -
|
| -bool QuicTimeWaitListManager::OnRstStreamFrame(
|
| - const QuicRstStreamFrame& /*frame*/) {
|
| - DCHECK(false);
|
| - return false;
|
| -}
|
| -
|
| -bool QuicTimeWaitListManager::OnConnectionCloseFrame(
|
| - const QuicConnectionCloseFrame & /*frame*/) {
|
| - DCHECK(false);
|
| - return false;
|
| -}
|
| -
|
| -bool QuicTimeWaitListManager::OnGoAwayFrame(const QuicGoAwayFrame& /*frame*/) {
|
| - DCHECK(false);
|
| - return false;
|
| -}
|
| -
|
| -void QuicTimeWaitListManager::OnFecData(const QuicFecData& /*fec*/) {
|
| - DCHECK(false);
|
| }
|
|
|
| // Returns true if the number of packets received for this guid is a power of 2
|
| @@ -315,7 +228,6 @@ void QuicTimeWaitListManager::WriteToWire(QueuedPacket* queued_packet) {
|
| queued_packet->server_address().address(),
|
| queued_packet->client_address(),
|
| this);
|
| -
|
| if (result.status == WRITE_STATUS_BLOCKED) {
|
| is_write_blocked_ = true;
|
| } else if (result.status == WRITE_STATUS_ERROR) {
|
|
|