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.