| Index: net/quic/quic_connection.cc
|
| diff --git a/net/quic/quic_connection.cc b/net/quic/quic_connection.cc
|
| index 6c6a1f27757805f2ee97a6f632e77c07c2fb4881..90350a0c51fbb344e61856689e81fe67af269e6d 100644
|
| --- a/net/quic/quic_connection.cc
|
| +++ b/net/quic/quic_connection.cc
|
| @@ -304,7 +304,7 @@ QuicConnection::QuicConnection(QuicConnectionId connection_id,
|
| fec_alarm_(helper->CreateAlarm(arena_.New<FecAlarm>(&packet_generator_),
|
| &arena_)),
|
| idle_network_timeout_(QuicTime::Delta::Infinite()),
|
| - overall_connection_timeout_(QuicTime::Delta::Infinite()),
|
| + handshake_timeout_(QuicTime::Delta::Infinite()),
|
| time_of_last_received_packet_(clock_->ApproximateNow()),
|
| time_of_last_sent_new_packet_(clock_->ApproximateNow()),
|
| last_send_for_timeout_(clock_->ApproximateNow()),
|
| @@ -369,6 +369,7 @@ void QuicConnection::ClearQueuedPackets() {
|
|
|
| void QuicConnection::SetFromConfig(const QuicConfig& config) {
|
| if (config.negotiated()) {
|
| + // Handshake complete, set handshake timeout to Infinite.
|
| SetNetworkTimeouts(QuicTime::Delta::Infinite(),
|
| config.IdleConnectionStateLifetime());
|
| if (config.SilentClose()) {
|
| @@ -2058,7 +2059,7 @@ void QuicConnection::SendConnectionClosePacket(QuicErrorCode error,
|
| // 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) {
|
| + error == QuicErrorCode::QUIC_NETWORK_IDLE_TIMEOUT) {
|
| return;
|
| }
|
| ClearQueuedPackets();
|
| @@ -2171,11 +2172,11 @@ bool QuicConnection::CanWriteStreamData() {
|
| return ShouldGeneratePacket(HAS_RETRANSMITTABLE_DATA, pending_handshake);
|
| }
|
|
|
| -void QuicConnection::SetNetworkTimeouts(QuicTime::Delta overall_timeout,
|
| +void QuicConnection::SetNetworkTimeouts(QuicTime::Delta handshake_timeout,
|
| QuicTime::Delta idle_timeout) {
|
| - QUIC_BUG_IF(idle_timeout > overall_timeout)
|
| + QUIC_BUG_IF(idle_timeout > handshake_timeout)
|
| << "idle_timeout:" << idle_timeout.ToMilliseconds()
|
| - << " overall_timeout:" << overall_timeout.ToMilliseconds();
|
| + << " handshake_timeout:" << handshake_timeout.ToMilliseconds();
|
| // Adjust the idle timeout on client and server to prevent clients from
|
| // sending requests to servers which have already closed the connection.
|
| if (perspective_ == Perspective::IS_SERVER) {
|
| @@ -2183,7 +2184,7 @@ void QuicConnection::SetNetworkTimeouts(QuicTime::Delta overall_timeout,
|
| } else if (idle_timeout > QuicTime::Delta::FromSeconds(1)) {
|
| idle_timeout = idle_timeout.Subtract(QuicTime::Delta::FromSeconds(1));
|
| }
|
| - overall_connection_timeout_ = overall_timeout;
|
| + handshake_timeout_ = handshake_timeout;
|
| idle_network_timeout_ = idle_timeout;
|
|
|
| SetTimeoutAlarm();
|
| @@ -2212,23 +2213,21 @@ void QuicConnection::CheckForTimeout() {
|
| << idle_network_timeout_.ToMicroseconds();
|
| if (idle_duration >= idle_network_timeout_) {
|
| DVLOG(1) << ENDPOINT << "Connection timedout due to no network activity.";
|
| - SendConnectionCloseWithDetails(QUIC_CONNECTION_TIMED_OUT,
|
| + SendConnectionCloseWithDetails(QUIC_NETWORK_IDLE_TIMEOUT,
|
| "No recent network activity");
|
| return;
|
| }
|
|
|
| - if (!overall_connection_timeout_.IsInfinite()) {
|
| + if (!handshake_timeout_.IsInfinite()) {
|
| QuicTime::Delta connected_duration =
|
| now.Subtract(stats_.connection_creation_time);
|
| DVLOG(1) << ENDPOINT
|
| << "connection time: " << connected_duration.ToMicroseconds()
|
| - << " overall timeout: "
|
| - << overall_connection_timeout_.ToMicroseconds();
|
| - if (connected_duration >= overall_connection_timeout_) {
|
| - DVLOG(1) << ENDPOINT
|
| - << "Connection timedout due to overall connection timeout.";
|
| - SendConnectionCloseWithDetails(QUIC_CONNECTION_OVERALL_TIMED_OUT,
|
| - "Overall timeout expired");
|
| + << " handshake timeout: " << handshake_timeout_.ToMicroseconds();
|
| + if (connected_duration >= handshake_timeout_) {
|
| + DVLOG(1) << ENDPOINT << "Connection timedout due to handshake timeout.";
|
| + SendConnectionCloseWithDetails(QUIC_HANDSHAKE_TIMEOUT,
|
| + "Handshake timeout expired");
|
| return;
|
| }
|
| }
|
| @@ -2241,10 +2240,9 @@ void QuicConnection::SetTimeoutAlarm() {
|
| max(time_of_last_received_packet_, time_of_last_sent_new_packet_);
|
|
|
| QuicTime deadline = time_of_last_packet.Add(idle_network_timeout_);
|
| - if (!overall_connection_timeout_.IsInfinite()) {
|
| + if (!handshake_timeout_.IsInfinite()) {
|
| deadline =
|
| - min(deadline,
|
| - stats_.connection_creation_time.Add(overall_connection_timeout_));
|
| + min(deadline, stats_.connection_creation_time.Add(handshake_timeout_));
|
| }
|
|
|
| timeout_alarm_->Cancel();
|
|
|