@ -410,7 +410,12 @@ PRAGMA_WARNING_DISABLE_VS(4355)
else
else
{
{
_dbg3("[sock " << socket().native_handle() << "] peer closed connection");
_dbg3("[sock " << socket().native_handle() << "] peer closed connection");
if (m_ready_to_close)
bool do_shutdown = false;
CRITICAL_REGION_BEGIN(m_send_que_lock);
if(!m_send_que.size())
do_shutdown = true;
CRITICAL_REGION_END();
if (m_ready_to_close || do_shutdown)
shutdown();
shutdown();
}
}
m_ready_to_close = true;
m_ready_to_close = true;
@ -470,6 +475,7 @@ PRAGMA_WARNING_DISABLE_VS(4355)
{
{
MERROR("SSL handshake failed");
MERROR("SSL handshake failed");
boost::interprocess::ipcdetail::atomic_write32(&m_want_close_connection, 1);
boost::interprocess::ipcdetail::atomic_write32(&m_want_close_connection, 1);
m_ready_to_close = true;
bool do_shutdown = false;
bool do_shutdown = false;
CRITICAL_REGION_BEGIN(m_send_que_lock);
CRITICAL_REGION_BEGIN(m_send_que_lock);
if(!m_send_que.size())
if(!m_send_que.size())