Commit a2c82875 authored by Marco De Marco's avatar Marco De Marco
Browse files

Connection reset fix: SSL hangs and protocol reset

parent c3c29e08
Loading
Loading
Loading
Loading
+4 −2
Original line number Diff line number Diff line
@@ -329,11 +329,13 @@ void Client::resetConnection()
    {
        ERROR_STREAM << "Client::resetConnection() Connection timeout" << endl;

        closeConnection();

        m_resetConnectionTimer.expires_at(boost::posix_time::pos_infin);
        m_requestResponseTimer.expires_at(boost::posix_time::pos_infin);

        m_protocolManager_sp->resetProtocolStatus();

        closeConnection();

        startResolve();
    }

+12 −0
Original line number Diff line number Diff line
@@ -60,6 +60,18 @@ bool ProtocolManager::waitBeforeRequest()
    return !m_hasMoreData;
}

//==============================================================================
//      ProtocolManager::resetProtocolStatus()
//==============================================================================
void ProtocolManager::resetProtocolStatus()
{
    DEBUG_STREAM << "ProtocolManager::resetProtocolStatus()" << endl;

    m_isAuthorised = false;
    m_isValidated = false;
    m_hasMoreData = true;
}

//==============================================================================
//      ProtocolManager::createRequest()
//==============================================================================
+5 −0
Original line number Diff line number Diff line
@@ -58,6 +58,11 @@ public:
//------------------------------------------------------------------------------
    virtual bool waitBeforeRequest();

//------------------------------------------------------------------------------
//  [Public] Reset protocol status method
//------------------------------------------------------------------------------
    virtual void resetProtocolStatus();

//------------------------------------------------------------------------------
//  [Public] Request response management method
//------------------------------------------------------------------------------
+1 −1
Original line number Diff line number Diff line
@@ -286,7 +286,7 @@ void SSLClient::closeConnection()

    boost::system::error_code errorCode;

    m_sSLSocket.shutdown(errorCode);
    //m_sSLSocket.shutdown(errorCode); @todo: hangs on shutdown

    m_sSLSocket.lowest_layer().shutdown(
        boost::asio::ip::tcp::socket::shutdown_both, errorCode);