| 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/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 | 9 | 
| 10 #include <algorithm> | 10 #include <algorithm> | 
| (...skipping 1493 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 1504 | 1504 | 
| 1505     // Re-packetize the frames with a new packet number for retransmission. | 1505     // Re-packetize the frames with a new packet number for retransmission. | 
| 1506     // Retransmitted data packets do not use FEC, even when it's enabled. | 1506     // Retransmitted data packets do not use FEC, even when it's enabled. | 
| 1507     // Retransmitted packets use the same packet number length as the | 1507     // Retransmitted packets use the same packet number length as the | 
| 1508     // original. | 1508     // original. | 
| 1509     // Flush the packet generator before making a new packet. | 1509     // Flush the packet generator before making a new packet. | 
| 1510     // TODO(ianswett): Implement ReserializeAllFrames as a separate path that | 1510     // TODO(ianswett): Implement ReserializeAllFrames as a separate path that | 
| 1511     // does not require the creator to be flushed. | 1511     // does not require the creator to be flushed. | 
| 1512     packet_generator_.FlushAllQueuedFrames(); | 1512     packet_generator_.FlushAllQueuedFrames(); | 
| 1513     char buffer[kMaxPacketSize]; | 1513     char buffer[kMaxPacketSize]; | 
| 1514     SerializedPacket serialized_packet = | 1514     packet_generator_.ReserializeAllFrames(pending, buffer, kMaxPacketSize); | 
| 1515         packet_generator_.ReserializeAllFrames(pending, buffer, kMaxPacketSize); |  | 
| 1516     if (FLAGS_quic_retransmit_via_onserializedpacket) { |  | 
| 1517       DCHECK(serialized_packet.encrypted_buffer == nullptr); |  | 
| 1518       continue; |  | 
| 1519     } |  | 
| 1520     if (serialized_packet.encrypted_buffer == nullptr) { |  | 
| 1521       // We failed to serialize the packet, so close the connection. |  | 
| 1522       // CloseConnection does not send close packet, so no infinite loop here. |  | 
| 1523       // TODO(ianswett): This is actually an internal error, not an encryption |  | 
| 1524       // failure. |  | 
| 1525       CloseConnection(QUIC_ENCRYPTION_FAILURE, |  | 
| 1526                       ConnectionCloseSource::FROM_SELF); |  | 
| 1527       return; |  | 
| 1528     } |  | 
| 1529 |  | 
| 1530     DVLOG(1) << ENDPOINT << "Retransmitting " << pending.packet_number << " as " |  | 
| 1531              << serialized_packet.packet_number; |  | 
| 1532     serialized_packet.original_packet_number = pending.packet_number; |  | 
| 1533     serialized_packet.transmission_type = pending.transmission_type; |  | 
| 1534     SendOrQueuePacket(&serialized_packet); |  | 
| 1535   } | 1515   } | 
| 1536 } | 1516 } | 
| 1537 | 1517 | 
| 1538 void QuicConnection::RetransmitUnackedPackets( | 1518 void QuicConnection::RetransmitUnackedPackets( | 
| 1539     TransmissionType retransmission_type) { | 1519     TransmissionType retransmission_type) { | 
| 1540   sent_packet_manager_.RetransmitUnackedPackets(retransmission_type); | 1520   sent_packet_manager_.RetransmitUnackedPackets(retransmission_type); | 
| 1541 | 1521 | 
| 1542   WriteIfNotBlocked(); | 1522   WriteIfNotBlocked(); | 
| 1543 } | 1523 } | 
| 1544 | 1524 | 
| (...skipping 986 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 2531 void QuicConnection::OnPathClosed(QuicPathId path_id) { | 2511 void QuicConnection::OnPathClosed(QuicPathId path_id) { | 
| 2532   // Stop receiving packets on this path. | 2512   // Stop receiving packets on this path. | 
| 2533   framer_.OnPathClosed(path_id); | 2513   framer_.OnPathClosed(path_id); | 
| 2534 } | 2514 } | 
| 2535 | 2515 | 
| 2536 bool QuicConnection::ack_frame_updated() const { | 2516 bool QuicConnection::ack_frame_updated() const { | 
| 2537   return received_packet_manager_.ack_frame_updated(); | 2517   return received_packet_manager_.ack_frame_updated(); | 
| 2538 } | 2518 } | 
| 2539 | 2519 | 
| 2540 }  // namespace net | 2520 }  // namespace net | 
| OLD | NEW | 
|---|