diff --git a/folly/io/async/AsyncSSLSocket.cpp b/folly/io/async/AsyncSSLSocket.cpp index 9c59cce72272aa02b862821c465e99362d89f269..e3df3950007603e237f7db3c0ef945538dc739bd 100644 --- a/folly/io/async/AsyncSSLSocket.cpp +++ b/folly/io/async/AsyncSSLSocket.cpp @@ -1073,7 +1073,7 @@ AsyncSSLSocket::handleConnect() noexcept { void AsyncSSLSocket::setReadCB(ReadCallback *callback) { #ifdef SSL_MODE_MOVE_BUFFER_OWNERSHIP // turn on the buffer movable in openssl - if (!isBufferMovable_ && readCallback_->isBufferMovable()) { + if (!isBufferMovable_ && callback != nullptr && callback->isBufferMovable()) { SSL_set_mode(ssl_, SSL_get_mode(ssl_) | SSL_MODE_MOVE_BUFFER_OWNERSHIP); isBufferMovable_ = true; } diff --git a/folly/io/async/AsyncSSLSocket.h b/folly/io/async/AsyncSSLSocket.h index 2cae50a44a791725c6b3681855527a7edf84c186..fe72e8f902ca5fba600ade7f9e37a2051abc096e 100644 --- a/folly/io/async/AsyncSSLSocket.h +++ b/folly/io/async/AsyncSSLSocket.h @@ -656,6 +656,8 @@ class AsyncSSLSocket : public virtual AsyncSocket { return minWriteSize_; } + void setReadCB(ReadCallback* callback) override; + private: void init(); @@ -673,7 +675,6 @@ class AsyncSSLSocket : public virtual AsyncSocket { // Inherit event notification methods from AsyncSocket except // the following. - void setReadCB(ReadCallback* callback) override; void prepareReadBuffer(void** buf, size_t* buflen) noexcept override; void handleRead() noexcept override; void handleWrite() noexcept override;