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);
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.async_wait (boost::bind (&SAMSocket::HandleStreamDestinationRequestTimer,
this, boost::asio::placeholders::error, dest.GetIdentHash (), session));
@ -366,7 +366,7 @@ namespace stream
SendNamingLookupReply (leaseSet);
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.async_wait (boost::bind (&SAMSocket::HandleNamingLookupDestinationRequestTimer,
this, boost::asio::placeholders::error, ident));
@ -447,7 +447,8 @@ namespace stream
if (ecode)
{
LogPrint ("SAM stream read error: ", ecode.message ());
Terminate ();
if (ecode != boost::asio::error::operation_aborted)
Terminate ();
}
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));
if (ecode == boost::asio::error::operation_aborted)
{
// timeout not expired
handler (boost::system::error_code (), received);
if (m_IsOpen)
// no error
handler (boost::system::error_code (), received);
else
// socket closed
handler (boost::asio::error::make_error_code (boost::asio::error::operation_aborted), 0);
}
else
// timeout expired
handler (boost::asio::error::make_error_code (boost::asio::error::timed_out), received);