diff --git a/src/udp_socket.cpp b/src/udp_socket.cpp index ee71173a6..a18ef09ae 100644 --- a/src/udp_socket.cpp +++ b/src/udp_socket.cpp @@ -195,7 +195,7 @@ void udp_socket::send(udp::endpoint const& ep, char const* p, int len #endif m_ipv4_sock.send_to(asio::buffer(p, len), ep, 0, ec); - if (ec == error::would_block) + if (ec == error::would_block || ec == error::try_again) { #if TORRENT_USE_IPV6 if (ep.address().is_v6() && m_ipv6_sock.is_open()) @@ -265,7 +265,7 @@ void udp_socket::on_read(error_code const& ec, udp::socket* s) error_code ec; udp::endpoint ep; size_t bytes_transferred = s->receive_from(asio::buffer(m_buf, m_buf_size), ep, 0, ec); - if (ec == asio::error::would_block) break; + if (ec == asio::error::would_block || ec == asio::error::try_again) break; on_read_impl(s, ep, ec, bytes_transferred); } call_drained_handler(); diff --git a/src/utp_stream.cpp b/src/utp_stream.cpp index 7445c3595..a129f88a7 100644 --- a/src/utp_stream.cpp +++ b/src/utp_stream.cpp @@ -1261,7 +1261,7 @@ void utp_socket_impl::send_syn() m_sm->send_packet(udp::endpoint(m_remote_address, m_port), (char const*)h , sizeof(utp_header), ec); - if (ec == error::would_block) + if (ec == error::would_block || ec == error::try_again) { #if TORRENT_UTP_LOG UTP_LOGV("%8p: socket stalled\n", this); @@ -1845,7 +1845,7 @@ bool utp_socket_impl::send_pkt(int flags) // as well, to resend the packet immediately without // it being an MTU probe } - else if (ec == error::would_block) + else if (ec == error::would_block || ec == error::try_again) { #if TORRENT_UTP_LOG UTP_LOGV("%8p: socket stalled\n", this); @@ -2008,7 +2008,7 @@ bool utp_socket_impl::resend_packet(packet* p, bool fast_resend) , boost::uint32_t(h->timestamp_difference_microseconds)); #endif - if (ec == error::would_block) + if (ec == error::would_block || ec == error::try_again) { #if TORRENT_UTP_LOG UTP_LOGV("%8p: socket stalled\n", this);