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

Unified Diff: net/quic/quic_connection.cc

Issue 786123002: Update from https://crrev.com/307330 (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: Created 6 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/quic_connection.h ('k') | net/quic/quic_connection_test.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: net/quic/quic_connection.cc
diff --git a/net/quic/quic_connection.cc b/net/quic/quic_connection.cc
index c33aec55e26698650b0069184588f3446a9f8ac3..74d175802e2bce2291396518d1ae5ba7ec02fb0e 100644
--- a/net/quic/quic_connection.cc
+++ b/net/quic/quic_connection.cc
@@ -192,7 +192,8 @@ QuicConnection::QuicConnection(QuicConnectionId connection_id,
bool is_server,
bool is_secure,
const QuicVersionVector& supported_versions)
- : framer_(supported_versions, helper->GetClock()->ApproximateNow(),
+ : framer_(supported_versions,
+ helper->GetClock()->ApproximateNow(),
is_server),
helper_(helper),
writer_(writer_factory.Create(this)),
@@ -213,6 +214,7 @@ QuicConnection::QuicConnection(QuicConnectionId connection_id,
largest_seen_packet_with_stop_waiting_(0),
max_undecryptable_packets_(0),
pending_version_negotiation_packet_(false),
+ silent_close_enabled_(false),
received_packet_manager_(&stats_),
ack_queued_(false),
num_packets_received_since_last_ack_sent_(0),
@@ -230,7 +232,9 @@ QuicConnection::QuicConnection(QuicConnectionId connection_id,
time_of_last_sent_new_packet_(clock_->ApproximateNow()),
sequence_number_of_last_sent_packet_(0),
sent_packet_manager_(
- is_server, clock_, &stats_,
+ is_server,
+ clock_,
+ &stats_,
FLAGS_quic_use_bbr_congestion_control ? kBBR : kCubic,
FLAGS_quic_use_time_loss_detection ? kTime : kNack,
is_secure),
@@ -268,6 +272,9 @@ void QuicConnection::SetFromConfig(const QuicConfig& config) {
if (config.negotiated()) {
SetNetworkTimeouts(QuicTime::Delta::Infinite(),
config.IdleConnectionStateLifetime());
+ if (FLAGS_quic_allow_silent_close && config.SilentClose()) {
+ silent_close_enabled_ = true;
+ }
} else {
SetNetworkTimeouts(config.max_time_before_crypto_handshake(),
config.max_idle_time_before_crypto_handshake());
@@ -313,14 +320,8 @@ bool QuicConnection::SelectMutualVersion(
void QuicConnection::OnError(QuicFramer* framer) {
// Packets that we can not or have not decrypted are dropped.
// TODO(rch): add stats to measure this.
- if (FLAGS_quic_drop_junk_packets) {
- if (!connected_ || last_packet_decrypted_ == false) {
- return;
- }
- } else {
- if (!connected_ || framer->error() == QUIC_DECRYPTION_FAILURE) {
- return;
- }
+ if (!connected_ || last_packet_decrypted_ == false) {
+ return;
}
SendConnectionCloseWithDetails(framer->error(), framer->detailed_error());
}
@@ -1854,6 +1855,12 @@ void QuicConnection::SendConnectionClosePacket(QuicErrorCode error,
DVLOG(1) << ENDPOINT << "Force closing " << connection_id()
<< " with error " << QuicUtils::ErrorToString(error)
<< " (" << error << ") " << details;
+ // Don't send explicit connection close packets for timeouts.
+ // This is particularly important on mobile, where connections are short.
+ if (silent_close_enabled_ &&
+ error == QuicErrorCode::QUIC_CONNECTION_TIMED_OUT) {
+ return;
+ }
ScopedPacketBundler ack_bundler(this, SEND_ACK);
QuicConnectionCloseFrame* frame = new QuicConnectionCloseFrame();
frame->error_code = error;
« no previous file with comments | « net/quic/quic_connection.h ('k') | net/quic/quic_connection_test.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698