operation_aborted error code for stream

This commit is contained in:
orignal 2014-10-03 22:46:20 -04:00
parent 1acce0cc80
commit 9a617297f2
2 changed files with 12 additions and 4 deletions

View file

@ -251,7 +251,7 @@ namespace stream
Connect (*leaseSet, session); Connect (*leaseSet, session);
else else
{ {
i2p::data::netdb.Subscribe (dest.GetIdentHash (), session->localDestination->GetTunnelPool ()); i2p::data::netdb.RequestDestination (dest.GetIdentHash (), true, session->localDestination->GetTunnelPool ());
m_Timer.expires_from_now (boost::posix_time::seconds(SAM_CONNECT_TIMEOUT)); m_Timer.expires_from_now (boost::posix_time::seconds(SAM_CONNECT_TIMEOUT));
m_Timer.async_wait (boost::bind (&SAMSocket::HandleStreamDestinationRequestTimer, m_Timer.async_wait (boost::bind (&SAMSocket::HandleStreamDestinationRequestTimer,
this, boost::asio::placeholders::error, dest.GetIdentHash (), session)); this, boost::asio::placeholders::error, dest.GetIdentHash (), session));
@ -366,7 +366,7 @@ namespace stream
SendNamingLookupReply (leaseSet); SendNamingLookupReply (leaseSet);
else else
{ {
i2p::data::netdb.Subscribe (ident, m_Session->localDestination->GetTunnelPool ()); i2p::data::netdb.RequestDestination (ident, true, m_Session->localDestination->GetTunnelPool ());
m_Timer.expires_from_now (boost::posix_time::seconds(SAM_NAMING_LOOKUP_TIMEOUT)); m_Timer.expires_from_now (boost::posix_time::seconds(SAM_NAMING_LOOKUP_TIMEOUT));
m_Timer.async_wait (boost::bind (&SAMSocket::HandleNamingLookupDestinationRequestTimer, m_Timer.async_wait (boost::bind (&SAMSocket::HandleNamingLookupDestinationRequestTimer,
this, boost::asio::placeholders::error, ident)); this, boost::asio::placeholders::error, ident));
@ -447,6 +447,7 @@ namespace stream
if (ecode) if (ecode)
{ {
LogPrint ("SAM stream read error: ", ecode.message ()); LogPrint ("SAM stream read error: ", ecode.message ());
if (ecode != boost::asio::error::operation_aborted)
Terminate (); Terminate ();
} }
else else

View file

@ -275,8 +275,15 @@ namespace stream
{ {
size_t received = ConcatenatePackets (boost::asio::buffer_cast<uint8_t *>(buffer), boost::asio::buffer_size(buffer)); size_t received = ConcatenatePackets (boost::asio::buffer_cast<uint8_t *>(buffer), boost::asio::buffer_size(buffer));
if (ecode == boost::asio::error::operation_aborted) if (ecode == boost::asio::error::operation_aborted)
{
// timeout not expired // timeout not expired
if (m_IsOpen)
// no error
handler (boost::system::error_code (), received); handler (boost::system::error_code (), received);
else
// socket closed
handler (boost::asio::error::make_error_code (boost::asio::error::operation_aborted), 0);
}
else else
// timeout expired // timeout expired
handler (boost::asio::error::make_error_code (boost::asio::error::timed_out), received); handler (boost::asio::error::make_error_code (boost::asio::error::timed_out), received);