diff --git a/libi2pd_client/BoostStream.h b/libi2pd_client/BoostStream.h index dbffba17..b7aec1b3 100644 --- a/libi2pd_client/BoostStream.h +++ b/libi2pd_client/BoostStream.h @@ -41,12 +41,12 @@ namespace client received += len; if (received < it->size ()) break; } - if (m_Stream->GetStatus () == i2p::stream::eStreamStatusClosed || + if (received > 0) // we have some data + handler (boost::system::error_code (), received); + else if (m_Stream->GetStatus () == i2p::stream::eStreamStatusClosed || m_Stream->GetStatus () == i2p::stream::eStreamStatusTerminated) // read stream after close, return eof with outstanding data - handler (boost::asio::error::make_error_code (boost::asio::error::eof), received); - else if (received > 0) // we have some data - handler (boost::system::error_code (), received); + handler (boost::asio::error::make_error_code (boost::asio::error::eof), 0); else if (bufs.size () > 0) // wait for incoming data m_Stream->AsyncReceive (*boost::asio::buffer_sequence_begin (bufs), std::move (handler), i2p::stream::MAX_RECEIVE_TIMEOUT); else