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

Side by Side Diff: net/quic/quic_connection.cc

Issue 448313003: Land Recent QUIC Changes. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@Final_0807
Patch Set: Created 6 years, 4 months 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 unified diff | Download patch
« no previous file with comments | « net/quic/quic_connection.h ('k') | net/quic/quic_connection_logger.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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/quic/quic_connection.h" 5 #include "net/quic/quic_connection.h"
6 6
7 #include <string.h> 7 #include <string.h>
8 #include <sys/types.h> 8 #include <sys/types.h>
9 #include <algorithm> 9 #include <algorithm>
10 #include <iterator> 10 #include <iterator>
(...skipping 1161 matching lines...) Expand 10 before | Expand all | Expand 10 after
1172 } 1172 }
1173 } 1173 }
1174 1174
1175 void QuicConnection::WriteIfNotBlocked() { 1175 void QuicConnection::WriteIfNotBlocked() {
1176 if (!writer_->IsWriteBlocked()) { 1176 if (!writer_->IsWriteBlocked()) {
1177 OnCanWrite(); 1177 OnCanWrite();
1178 } 1178 }
1179 } 1179 }
1180 1180
1181 bool QuicConnection::ProcessValidatedPacket() { 1181 bool QuicConnection::ProcessValidatedPacket() {
1182 if ((!FLAGS_quic_allow_port_migration && peer_port_changed_) || 1182 if (peer_ip_changed_ || self_ip_changed_ || self_port_changed_) {
1183 peer_ip_changed_ || self_ip_changed_ || self_port_changed_) {
1184 SendConnectionCloseWithDetails( 1183 SendConnectionCloseWithDetails(
1185 QUIC_ERROR_MIGRATING_ADDRESS, 1184 QUIC_ERROR_MIGRATING_ADDRESS,
1186 "Neither IP address migration, nor self port migration are supported."); 1185 "Neither IP address migration, nor self port migration are supported.");
1187 return false; 1186 return false;
1188 } 1187 }
1189 1188
1190 // Port migration is supported, do it now if port has changed. 1189 // Peer port migration is supported, do it now if port has changed.
1191 if (FLAGS_quic_allow_port_migration && 1190 if (peer_port_changed_) {
1192 peer_port_changed_) {
1193 DVLOG(1) << ENDPOINT << "Peer's port changed from " 1191 DVLOG(1) << ENDPOINT << "Peer's port changed from "
1194 << peer_address_.port() << " to " << migrating_peer_port_ 1192 << peer_address_.port() << " to " << migrating_peer_port_
1195 << ", migrating connection."; 1193 << ", migrating connection.";
1196 peer_address_ = IPEndPoint(peer_address_.address(), migrating_peer_port_); 1194 peer_address_ = IPEndPoint(peer_address_.address(), migrating_peer_port_);
1197 } 1195 }
1198 1196
1199 time_of_last_received_packet_ = clock_->Now(); 1197 time_of_last_received_packet_ = clock_->Now();
1200 DVLOG(1) << ENDPOINT << "time of last received packet: " 1198 DVLOG(1) << ENDPOINT << "time of last received packet: "
1201 << time_of_last_received_packet_.ToDebuggingValue(); 1199 << time_of_last_received_packet_.ToDebuggingValue();
1202 1200
(...skipping 332 matching lines...) Expand 10 before | Expand all | Expand 10 after
1535 set_encryption_level(encryption_level_); 1533 set_encryption_level(encryption_level_);
1536 } 1534 }
1537 sent_packet_manager_.OnSerializedPacket(serialized_packet); 1535 sent_packet_manager_.OnSerializedPacket(serialized_packet);
1538 // The TransmissionType is NOT_RETRANSMISSION because all retransmissions 1536 // The TransmissionType is NOT_RETRANSMISSION because all retransmissions
1539 // serialize packets and invoke SendOrQueuePacket directly. 1537 // serialize packets and invoke SendOrQueuePacket directly.
1540 return SendOrQueuePacket(encryption_level_, 1538 return SendOrQueuePacket(encryption_level_,
1541 serialized_packet, 1539 serialized_packet,
1542 NOT_RETRANSMISSION); 1540 NOT_RETRANSMISSION);
1543 } 1541 }
1544 1542
1543 void QuicConnection::OnHandshakeComplete() {
1544 sent_packet_manager_.SetHandshakeConfirmed();
1545 }
1546
1545 bool QuicConnection::SendOrQueuePacket(EncryptionLevel level, 1547 bool QuicConnection::SendOrQueuePacket(EncryptionLevel level,
1546 const SerializedPacket& packet, 1548 const SerializedPacket& packet,
1547 TransmissionType transmission_type) { 1549 TransmissionType transmission_type) {
1548 if (packet.packet == NULL) { 1550 if (packet.packet == NULL) {
1549 LOG(DFATAL) << "NULL packet passed in to SendOrQueuePacket"; 1551 LOG(DFATAL) << "NULL packet passed in to SendOrQueuePacket";
1550 return true; 1552 return true;
1551 } 1553 }
1552 1554
1553 sent_entropy_manager_.RecordPacketEntropyHash(packet.sequence_number, 1555 sent_entropy_manager_.RecordPacketEntropyHash(packet.sequence_number,
1554 packet.entropy_hash); 1556 packet.entropy_hash);
(...skipping 234 matching lines...) Expand 10 before | Expand all | Expand 10 after
1789 packet_generator_.FlushAllQueuedFrames(); 1791 packet_generator_.FlushAllQueuedFrames();
1790 } 1792 }
1791 1793
1792 void QuicConnection::CloseConnection(QuicErrorCode error, bool from_peer) { 1794 void QuicConnection::CloseConnection(QuicErrorCode error, bool from_peer) {
1793 if (!connected_) { 1795 if (!connected_) {
1794 DLOG(DFATAL) << "Error: attempt to close an already closed connection" 1796 DLOG(DFATAL) << "Error: attempt to close an already closed connection"
1795 << base::debug::StackTrace().ToString(); 1797 << base::debug::StackTrace().ToString();
1796 return; 1798 return;
1797 } 1799 }
1798 connected_ = false; 1800 connected_ = false;
1801 if (debug_visitor_.get() != NULL) {
1802 debug_visitor_->OnConnectionClosed(error, from_peer);
1803 }
1799 visitor_->OnConnectionClosed(error, from_peer); 1804 visitor_->OnConnectionClosed(error, from_peer);
1800 // Cancel the alarms so they don't trigger any action now that the 1805 // Cancel the alarms so they don't trigger any action now that the
1801 // connection is closed. 1806 // connection is closed.
1802 ack_alarm_->Cancel(); 1807 ack_alarm_->Cancel();
1803 resume_writes_alarm_->Cancel(); 1808 resume_writes_alarm_->Cancel();
1804 retransmission_alarm_->Cancel(); 1809 retransmission_alarm_->Cancel();
1805 send_alarm_->Cancel(); 1810 send_alarm_->Cancel();
1806 timeout_alarm_->Cancel(); 1811 timeout_alarm_->Cancel();
1807 } 1812 }
1808 1813
(...skipping 174 matching lines...) Expand 10 before | Expand all | Expand 10 after
1983 // If we changed the generator's batch state, restore original batch state. 1988 // If we changed the generator's batch state, restore original batch state.
1984 if (!already_in_batch_mode_) { 1989 if (!already_in_batch_mode_) {
1985 DVLOG(1) << "Leaving Batch Mode."; 1990 DVLOG(1) << "Leaving Batch Mode.";
1986 connection_->packet_generator_.FinishBatchOperations(); 1991 connection_->packet_generator_.FinishBatchOperations();
1987 } 1992 }
1988 DCHECK_EQ(already_in_batch_mode_, 1993 DCHECK_EQ(already_in_batch_mode_,
1989 connection_->packet_generator_.InBatchMode()); 1994 connection_->packet_generator_.InBatchMode());
1990 } 1995 }
1991 1996
1992 } // namespace net 1997 } // namespace net
OLDNEW
« no previous file with comments | « net/quic/quic_connection.h ('k') | net/quic/quic_connection_logger.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698