From a93384bda3ba6146e4e9972d8803b9a21f7aae6e Mon Sep 17 00:00:00 2001 From: Woo Xie <woo@fb.com> Date: Mon, 29 Jun 2015 16:43:14 -0700 Subject: [PATCH] move the socket setting into setReadCB() Summary: refactor D2201181 Reviewed By: @afrind Differential Revision: D2202245 --- folly/io/async/AsyncSSLSocket.cpp | 21 ++++++++++++++------- folly/io/async/AsyncSSLSocket.h | 1 + 2 files changed, 15 insertions(+), 7 deletions(-) diff --git a/folly/io/async/AsyncSSLSocket.cpp b/folly/io/async/AsyncSSLSocket.cpp index 4c9348a7..9c59cce7 100644 --- a/folly/io/async/AsyncSSLSocket.cpp +++ b/folly/io/async/AsyncSSLSocket.cpp @@ -1070,20 +1070,27 @@ AsyncSSLSocket::handleConnect() noexcept { AsyncSocket::handleInitialReadWrite(); } -void AsyncSSLSocket::prepareReadBuffer(void** buf, size_t* buflen) noexcept { - CHECK(readCallback_); +void AsyncSSLSocket::setReadCB(ReadCallback *callback) { #ifdef SSL_MODE_MOVE_BUFFER_OWNERSHIP // turn on the buffer movable in openssl if (!isBufferMovable_ && readCallback_->isBufferMovable()) { SSL_set_mode(ssl_, SSL_get_mode(ssl_) | SSL_MODE_MOVE_BUFFER_OWNERSHIP); - *buf = nullptr; - *buflen = 0; isBufferMovable_ = true; - return; } #endif - // buf is necessary for SSLSocket without SSL_MODE_MOVE_BUFFER_OWNERSHIP - readCallback_->getReadBuffer(buf, buflen); + + AsyncSocket::setReadCB(callback); +} + +void AsyncSSLSocket::prepareReadBuffer(void** buf, size_t* buflen) noexcept { + CHECK(readCallback_); + if (isBufferMovable_) { + *buf = nullptr; + *buflen = 0; + } else { + // buf is necessary for SSLSocket without SSL_MODE_MOVE_BUFFER_OWNERSHIP + readCallback_->getReadBuffer(buf, buflen); + } } void diff --git a/folly/io/async/AsyncSSLSocket.h b/folly/io/async/AsyncSSLSocket.h index 85c3536e..2cae50a4 100644 --- a/folly/io/async/AsyncSSLSocket.h +++ b/folly/io/async/AsyncSSLSocket.h @@ -673,6 +673,7 @@ 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; -- 2.34.1