| Index: net/quic/quic_connection.cc
|
| diff --git a/net/quic/quic_connection.cc b/net/quic/quic_connection.cc
|
| index 273f4f54d8ecaff1908792d558c21a5dcdcf46de..dce0ca15c8305b7a53e9828d7bc98723bf864c6a 100644
|
| --- a/net/quic/quic_connection.cc
|
| +++ b/net/quic/quic_connection.cc
|
| @@ -389,8 +389,7 @@ bool QuicConnection::OnPacketHeader(const QuicPacketHeader& header) {
|
| debug_visitor_->OnPacketHeader(header);
|
| }
|
|
|
| - if (header.fec_flag && framer_.version() <= QUIC_VERSION_14) {
|
| - DLOG(WARNING) << "Ignoring FEC packets for versions prior to 15.";
|
| + if (header.fec_flag && framer_.version() == QUIC_VERSION_13) {
|
| return false;
|
| }
|
|
|
| @@ -1301,8 +1300,11 @@ bool QuicConnection::WritePacket(QueuedPacket packet) {
|
| }
|
| if (debug_visitor_) {
|
| // Pass the write result to the visitor.
|
| - debug_visitor_->OnPacketSent(
|
| - sequence_number, packet.encryption_level, *encrypted, result);
|
| + debug_visitor_->OnPacketSent(sequence_number,
|
| + packet.encryption_level,
|
| + packet.transmission_type,
|
| + *encrypted,
|
| + result);
|
| }
|
| if (result.status == WRITE_STATUS_BLOCKED) {
|
| visitor_->OnWriteBlocked();
|
| @@ -1618,7 +1620,12 @@ void QuicConnection::SendConnectionCloseWithDetails(QuicErrorCode error,
|
| // If we're write blocked, WritePacket() will not send, but will capture the
|
| // serialized packet.
|
| SendConnectionClosePacket(error, details);
|
| - CloseConnection(error, false);
|
| + if (connected_) {
|
| + // It's possible that while sending the connection close packet, we get a
|
| + // socket error and disconnect right then and there. Avoid a double
|
| + // disconnect in that case.
|
| + CloseConnection(error, false);
|
| + }
|
| }
|
|
|
| void QuicConnection::SendConnectionClosePacket(QuicErrorCode error,
|
|
|