From 0d7e3cb8c746c1961e13e7857fd7cf8ea0d895e4 Mon Sep 17 00:00:00 2001 From: Arvid Norberg Date: Sat, 5 May 2012 23:54:41 +0000 Subject: [PATCH] uTP timeout fix --- src/utp_stream.cpp | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/utp_stream.cpp b/src/utp_stream.cpp index d76bcd186..589addff5 100644 --- a/src/utp_stream.cpp +++ b/src/utp_stream.cpp @@ -2882,6 +2882,16 @@ void utp_socket_impl::tick(ptime const& now) m_cwnd = boost::int64_t(m_mtu) << 16; if (m_outbuf.size()) ++m_num_timeouts; + + if (m_num_timeouts > m_sm->num_resends()) + { + // the connection is dead + m_error = asio::error::timed_out; + m_state = UTP_STATE_ERROR_WAIT; + test_socket_state(); + return; + } + m_timeout = now + milliseconds(packet_timeout()); UTP_LOGV("%8p: timeout resetting cwnd:%d\n"