move the socket setting into setReadCB()
authorWoo Xie <woo@fb.com>
Mon, 29 Jun 2015 23:43:14 +0000 (16:43 -0700)
committerSara Golemon <sgolemon@fb.com>
Wed, 1 Jul 2015 23:24:50 +0000 (16:24 -0700)
Summary: refactor D2201181

Reviewed By: @afrind

Differential Revision: D2202245

folly/io/async/AsyncSSLSocket.cpp
folly/io/async/AsyncSSLSocket.h

index 4c9348a76314ea8cf85206e38d838ab042426519..9c59cce72272aa02b862821c465e99362d89f269 100644 (file)
@@ -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
index 85c3536e889abfdbd141f11fb80e26dd7a345b66..2cae50a44a791725c6b3681855527a7edf84c186 100644 (file)
@@ -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;