diff --git a/folly/io/async/AsyncSSLSocket.h b/folly/io/async/AsyncSSLSocket.h
index 20ec147d4d628901b2826c1ee8a162b4676b5c79..8f64a7bcff443c73346103c00a463dacd5ef0528 100644
--- a/folly/io/async/AsyncSSLSocket.h
+++ b/folly/io/async/AsyncSSLSocket.h
@@ -805,6 +805,11 @@ class AsyncSSLSocket : public AsyncSocket {
     asyncOperationFinishCallback_ = std::move(cb);
   }
 
+  // zero copy is not supported by openssl.
+  bool setZeroCopy(bool /*enable*/) override {
+    return false;
+  }
+
  private:
   /**
    * Handle the return from invoking SSL_accept
diff --git a/folly/io/async/test/AsyncSSLSocketTest.cpp b/folly/io/async/test/AsyncSSLSocketTest.cpp
index dfa84edfd21018c454e5f6a6e87413d40a0e0d5e..73a9384cf9f604d202754b2cd089c47e7e8f9409 100644
--- a/folly/io/async/test/AsyncSSLSocketTest.cpp
+++ b/folly/io/async/test/AsyncSSLSocketTest.cpp
@@ -213,6 +213,20 @@ TEST(AsyncSSLSocketTest, ConnectWriteReadClose) {
   EXPECT_EQ(socket->getSSLSocket()->getTotalConnectTimeout().count(), 10000);
 }
 
+/**
+ * Check that zero copy options are a noop under AsyncSSLSocket since they
+ * aren't supported.
+ */
+TEST(AsyncSSLSocketTest, ZeroCopy) {
+  // Set up SSL context.
+  std::shared_ptr<SSLContext> sslContext(new SSLContext());
+  sslContext->ciphers("ALL:!ADH:!LOW:!EXP:!MD5:@STRENGTH");
+
+  auto socket = AsyncSSLSocket::newSocket(sslContext, /*evb=*/nullptr);
+  EXPECT_FALSE(socket->setZeroCopy(true));
+  EXPECT_FALSE(socket->getZeroCopy());
+}
+
 /**
  * Same as above simple test, but with a large read len to test
  * clamping behavior.