Index: net/tools/quic/quic_default_packet_writer.cc |
diff --git a/net/tools/quic/quic_default_packet_writer.cc b/net/tools/quic/quic_default_packet_writer.cc |
index 9d3e30831c1c8c19e4f5b8936e32b82de56aa025..6d77c00a9f565a7f37209ef7f1590e1edc53bdab 100644 |
--- a/net/tools/quic/quic_default_packet_writer.cc |
+++ b/net/tools/quic/quic_default_packet_writer.cc |
@@ -9,7 +9,9 @@ |
namespace net { |
namespace tools { |
-QuicDefaultPacketWriter::QuicDefaultPacketWriter(int fd) : fd_(fd) {} |
+QuicDefaultPacketWriter::QuicDefaultPacketWriter(int fd) |
+ : fd_(fd), |
+ write_blocked_(false) {} |
QuicDefaultPacketWriter::~QuicDefaultPacketWriter() {} |
@@ -18,13 +20,26 @@ WriteResult QuicDefaultPacketWriter::WritePacket( |
const net::IPAddressNumber& self_address, |
const net::IPEndPoint& peer_address, |
QuicBlockedWriterInterface* blocked_writer) { |
- return QuicSocketUtils::WritePacket(fd_, buffer, buf_len, |
- self_address, peer_address); |
+ DCHECK(!IsWriteBlocked()); |
+ WriteResult result = QuicSocketUtils::WritePacket( |
+ fd_, buffer, buf_len, self_address, peer_address); |
+ if (result.status == WRITE_STATUS_BLOCKED) { |
+ write_blocked_ = true; |
+ } |
+ return result; |
} |
bool QuicDefaultPacketWriter::IsWriteBlockedDataBuffered() const { |
return false; |
} |
+bool QuicDefaultPacketWriter::IsWriteBlocked() const { |
+ return write_blocked_; |
+} |
+ |
+void QuicDefaultPacketWriter::SetWritable() { |
+ write_blocked_ = false; |
+} |
+ |
} // namespace tools |
} // namespace net |