drill-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From parthchandra <...@git.apache.org>
Subject [GitHub] drill pull request #950: DRILL-5431: SSL Support
Date Thu, 05 Oct 2017 01:14:17 GMT
Github user parthchandra commented on a diff in the pull request:

    --- Diff: contrib/native/client/src/clientlib/drillClientImpl.cpp ---
    @@ -250,7 +205,15 @@ void DrillClientImpl::doWriteToSocket(const char* dataPtr, size_t
         // Write all the bytes to socket. In case of error when all bytes are not successfully
         // proper errorCode will be set.
         while(1) {
    -        size_t bytesWritten = m_socket.write_some(boost::asio::buffer(dataPtr, bytesToWrite),
    +        size_t bytesWritten;
    +        {
    +            boost::lock_guard<boost::mutex> lock(m_channelMutex);
    --- End diff --
    Oh this was found by Rob Wu. The problem occurs when the heartbeat timer has gone off
and we are in the handler which is about to send off a heartbeat. Before the heartbeat is
sent if the caller deletes DrillClientImpl (via DrillClient) then the channel may be closed
and the pointer to the channel may be set to null causing the heartbeat send to crash. This
did not occur previously because the socket was not a pointer and/or boost was able to handle
it quite nicely. 


View raw message