| 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 #include <algorithm> | 9 #include <algorithm> |
| 10 #include <iterator> | 10 #include <iterator> |
| (...skipping 760 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 771 pending_version_negotiation_packet_ = true; | 771 pending_version_negotiation_packet_ = true; |
| 772 if (writer_->IsWriteBlocked()) { | 772 if (writer_->IsWriteBlocked()) { |
| 773 visitor_->OnWriteBlocked(); | 773 visitor_->OnWriteBlocked(); |
| 774 return; | 774 return; |
| 775 } | 775 } |
| 776 scoped_ptr<QuicEncryptedPacket> version_packet( | 776 scoped_ptr<QuicEncryptedPacket> version_packet( |
| 777 packet_creator_.SerializeVersionNegotiationPacket( | 777 packet_creator_.SerializeVersionNegotiationPacket( |
| 778 framer_.supported_versions())); | 778 framer_.supported_versions())); |
| 779 WriteResult result = writer_->WritePacket( | 779 WriteResult result = writer_->WritePacket( |
| 780 version_packet->data(), version_packet->length(), | 780 version_packet->data(), version_packet->length(), |
| 781 self_address().address(), peer_address(), this); | 781 self_address().address(), peer_address()); |
| 782 | 782 |
| 783 if (result.status == WRITE_STATUS_ERROR) { | 783 if (result.status == WRITE_STATUS_ERROR) { |
| 784 // We can't send an error as the socket is presumably borked. | 784 // We can't send an error as the socket is presumably borked. |
| 785 CloseConnection(QUIC_PACKET_WRITE_ERROR, false); | 785 CloseConnection(QUIC_PACKET_WRITE_ERROR, false); |
| 786 return; | 786 return; |
| 787 } | 787 } |
| 788 if (result.status == WRITE_STATUS_BLOCKED) { | 788 if (result.status == WRITE_STATUS_BLOCKED) { |
| 789 visitor_->OnWriteBlocked(); | 789 visitor_->OnWriteBlocked(); |
| 790 if (writer_->IsWriteBlockedDataBuffered()) { | 790 if (writer_->IsWriteBlockedDataBuffered()) { |
| 791 pending_version_negotiation_packet_ = false; | 791 pending_version_negotiation_packet_ = false; |
| (...skipping 357 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1149 << " forced: " << (forced == FORCE ? "yes" : "no"); | 1149 << " forced: " << (forced == FORCE ? "yes" : "no"); |
| 1150 | 1150 |
| 1151 DCHECK(pending_write_.get() == NULL); | 1151 DCHECK(pending_write_.get() == NULL); |
| 1152 pending_write_.reset(new PendingWrite(sequence_number, transmission_type, | 1152 pending_write_.reset(new PendingWrite(sequence_number, transmission_type, |
| 1153 retransmittable, level, | 1153 retransmittable, level, |
| 1154 packet.is_fec_packet(), | 1154 packet.is_fec_packet(), |
| 1155 packet.length())); | 1155 packet.length())); |
| 1156 | 1156 |
| 1157 WriteResult result = | 1157 WriteResult result = |
| 1158 writer_->WritePacket(encrypted->data(), encrypted->length(), | 1158 writer_->WritePacket(encrypted->data(), encrypted->length(), |
| 1159 self_address().address(), peer_address(), this); | 1159 self_address().address(), peer_address()); |
| 1160 if (result.error_code == ERR_IO_PENDING) { | 1160 if (result.error_code == ERR_IO_PENDING) { |
| 1161 DCHECK_EQ(WRITE_STATUS_BLOCKED, result.status); | 1161 DCHECK_EQ(WRITE_STATUS_BLOCKED, result.status); |
| 1162 } | 1162 } |
| 1163 if (debug_visitor_) { | 1163 if (debug_visitor_) { |
| 1164 // Pass the write result to the visitor. | 1164 // Pass the write result to the visitor. |
| 1165 debug_visitor_->OnPacketSent(sequence_number, level, *encrypted, result); | 1165 debug_visitor_->OnPacketSent(sequence_number, level, *encrypted, result); |
| 1166 } | 1166 } |
| 1167 if (result.status == WRITE_STATUS_BLOCKED) { | 1167 if (result.status == WRITE_STATUS_BLOCKED) { |
| 1168 visitor_->OnWriteBlocked(); | 1168 visitor_->OnWriteBlocked(); |
| 1169 // If the socket buffers the the data, then the packet should not | 1169 // If the socket buffers the the data, then the packet should not |
| (...skipping 494 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1664 // If we changed the generator's batch state, restore original batch state. | 1664 // If we changed the generator's batch state, restore original batch state. |
| 1665 if (!already_in_batch_mode_) { | 1665 if (!already_in_batch_mode_) { |
| 1666 DVLOG(1) << "Leaving Batch Mode."; | 1666 DVLOG(1) << "Leaving Batch Mode."; |
| 1667 connection_->packet_generator_.FinishBatchOperations(); | 1667 connection_->packet_generator_.FinishBatchOperations(); |
| 1668 } | 1668 } |
| 1669 DCHECK_EQ(already_in_batch_mode_, | 1669 DCHECK_EQ(already_in_batch_mode_, |
| 1670 connection_->packet_generator_.InBatchMode()); | 1670 connection_->packet_generator_.InBatchMode()); |
| 1671 } | 1671 } |
| 1672 | 1672 |
| 1673 } // namespace net | 1673 } // namespace net |
| OLD | NEW |