OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "net/tools/quic/quic_dispatcher.h" | 5 #include "net/tools/quic/quic_dispatcher.h" |
6 | 6 |
7 #include <utility> | 7 #include <utility> |
8 | 8 |
9 #include "base/debug/stack_trace.h" | 9 #include "base/debug/stack_trace.h" |
10 #include "base/logging.h" | 10 #include "base/logging.h" |
(...skipping 701 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
712 ShouldCreateOrBufferPacketForConnection(connection_id); | 712 ShouldCreateOrBufferPacketForConnection(connection_id); |
713 } | 713 } |
714 } | 714 } |
715 | 715 |
716 void QuicDispatcher::ProcessChlo() { | 716 void QuicDispatcher::ProcessChlo() { |
717 if (FLAGS_quic_create_session_after_insertion && | 717 if (FLAGS_quic_create_session_after_insertion && |
718 !buffered_packets_.HasBufferedPackets(current_connection_id_) && | 718 !buffered_packets_.HasBufferedPackets(current_connection_id_) && |
719 !ShouldCreateOrBufferPacketForConnection(current_connection_id_)) { | 719 !ShouldCreateOrBufferPacketForConnection(current_connection_id_)) { |
720 return; | 720 return; |
721 } | 721 } |
722 | 722 if (FLAGS_quic_allow_chlo_buffering && |
723 if (FLAGS_quic_limit_num_new_sessions_per_epoll_loop && | 723 FLAGS_quic_limit_num_new_sessions_per_epoll_loop && |
724 new_sessions_allowed_per_event_loop_ <= 0) { | 724 new_sessions_allowed_per_event_loop_ <= 0) { |
725 // Can't create new session any more. Wait till next event loop. | 725 // Can't create new session any more. Wait till next event loop. |
726 if (!buffered_packets_.HasChloForConnection(current_connection_id_)) { | 726 if (!buffered_packets_.HasChloForConnection(current_connection_id_)) { |
727 // Only buffer one CHLO per connection. Remove this condition check when | 727 // Only buffer one CHLO per connection. Remove this condition check when |
728 // --gfe2_reloadable_flag_quic_buffer_packets_after_chlo | 728 // --gfe2_reloadable_flag_quic_buffer_packets_after_chlo |
729 // is deprecated because after that retransmitted CHLO should be buffered | 729 // is deprecated because after that retransmitted CHLO should be buffered |
730 // earlier in OnUnauthenticatedPublicHeader(). | 730 // earlier in OnUnauthenticatedPublicHeader(). |
731 bool is_new_connection = | 731 bool is_new_connection = |
732 !buffered_packets_.HasBufferedPackets(current_connection_id_); | 732 !buffered_packets_.HasBufferedPackets(current_connection_id_); |
733 EnqueuePacketResult rs = buffered_packets_.EnqueuePacket( | 733 EnqueuePacketResult rs = buffered_packets_.EnqueuePacket( |
(...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
821 IPEndPoint current_client_address_; | 821 IPEndPoint current_client_address_; |
822 IPEndPoint current_server_address_; | 822 IPEndPoint current_server_address_; |
823 std::unique_ptr<QuicReceivedPacket> current_packet_; | 823 std::unique_ptr<QuicReceivedPacket> current_packet_; |
824 QuicPacketNumber packet_number_; | 824 QuicPacketNumber packet_number_; |
825 QuicVersion first_version_; | 825 QuicVersion first_version_; |
826 }; | 826 }; |
827 | 827 |
828 void QuicDispatcher::MaybeRejectStatelessly(QuicConnectionId connection_id, | 828 void QuicDispatcher::MaybeRejectStatelessly(QuicConnectionId connection_id, |
829 const QuicPacketHeader& header) { | 829 const QuicPacketHeader& header) { |
830 // TODO(rch): This logic should probably live completely inside the rejector. | 830 // TODO(rch): This logic should probably live completely inside the rejector. |
831 if (!FLAGS_quic_use_cheap_stateless_rejects || | 831 if (!FLAGS_quic_allow_chlo_buffering || |
| 832 !FLAGS_quic_use_cheap_stateless_rejects || |
832 !FLAGS_enable_quic_stateless_reject_support || | 833 !FLAGS_enable_quic_stateless_reject_support || |
833 !ShouldAttemptCheapStatelessRejection()) { | 834 !ShouldAttemptCheapStatelessRejection()) { |
834 // Not use cheap stateless reject. | 835 // Not use cheap stateless reject. |
835 if (!ChloExtractor::Extract(*current_packet_, GetSupportedVersions(), | 836 if (FLAGS_quic_allow_chlo_buffering && |
| 837 !ChloExtractor::Extract(*current_packet_, GetSupportedVersions(), |
836 nullptr)) { | 838 nullptr)) { |
837 // Buffer non-CHLO packets. | 839 // Buffer non-CHLO packets. |
838 ProcessUnauthenticatedHeaderFate(kFateBuffer, connection_id, | 840 ProcessUnauthenticatedHeaderFate(kFateBuffer, connection_id, |
839 header.packet_number); | 841 header.packet_number); |
840 return; | 842 return; |
841 } | 843 } |
842 ProcessUnauthenticatedHeaderFate(kFateProcess, connection_id, | 844 ProcessUnauthenticatedHeaderFate(kFateProcess, connection_id, |
843 header.packet_number); | 845 header.packet_number); |
844 return; | 846 return; |
845 } | 847 } |
(...skipping 139 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
985 void QuicDispatcher::DeliverPacketsToSession( | 987 void QuicDispatcher::DeliverPacketsToSession( |
986 const std::list<BufferedPacket>& packets, | 988 const std::list<BufferedPacket>& packets, |
987 QuicSession* session) { | 989 QuicSession* session) { |
988 for (const BufferedPacket& packet : packets) { | 990 for (const BufferedPacket& packet : packets) { |
989 session->ProcessUdpPacket(packet.server_address, packet.client_address, | 991 session->ProcessUdpPacket(packet.server_address, packet.client_address, |
990 *(packet.packet)); | 992 *(packet.packet)); |
991 } | 993 } |
992 } | 994 } |
993 | 995 |
994 } // namespace net | 996 } // namespace net |
OLD | NEW |