Index: mojo/services/network/udp_socket_impl.cc |
diff --git a/mojo/services/network/udp_socket_impl.cc b/mojo/services/network/udp_socket_impl.cc |
index e39d4a700999600129e14065f7a9576acffcfe0d..72d086e8228bb4ffcc5b9cedb43777b01ec89dc5 100644 |
--- a/mojo/services/network/udp_socket_impl.cc |
+++ b/mojo/services/network/udp_socket_impl.cc |
@@ -82,6 +82,11 @@ void UDPSocketImpl::Bind( |
bound_ = true; |
callback.Run(MakeNetworkError(net::OK), bound_addr.Pass()); |
+ |
+ if (remaining_recv_slots_ > 0) { |
+ DCHECK(!recvfrom_buffer_.get()); |
+ DoRecvFrom(); |
+ } |
} |
void UDPSocketImpl::SetSendBufferSize( |
@@ -138,7 +143,7 @@ void UDPSocketImpl::NegotiateMaxPendingSendRequests( |
} |
void UDPSocketImpl::ReceiveMore(uint32_t datagram_number) { |
- if (!bound_ || datagram_number == 0) |
+ if (datagram_number == 0) |
return; |
if (std::numeric_limits<size_t>::max() - remaining_recv_slots_ < |
datagram_number) { |
@@ -147,7 +152,7 @@ void UDPSocketImpl::ReceiveMore(uint32_t datagram_number) { |
remaining_recv_slots_ += datagram_number; |
- if (!recvfrom_buffer_.get()) { |
+ if (bound_ && !recvfrom_buffer_.get()) { |
DCHECK_EQ(datagram_number, remaining_recv_slots_); |
DoRecvFrom(); |
} |