Commit 1952cd00 authored by Mingtao Yang's avatar Mingtao Yang Committed by Facebook Github Bot

Remove "movable buffers" codepath in AsyncSSLSocket

Reviewed By: yfeldblum

Differential Revision: D13800383

fbshipit-source-id: 61b988182cb8da6f084b62a0879f0ca917f8ad34
parent 8b47e569
......@@ -1331,35 +1331,6 @@ void AsyncSSLSocket::scheduleConnectTimeout() {
AsyncSocket::scheduleConnectTimeout();
}
void AsyncSSLSocket::setReadCB(ReadCallback* callback) {
#ifdef SSL_MODE_MOVE_BUFFER_OWNERSHIP
// turn on the buffer movable in openssl
if (bufferMovableEnabled_ && ssl_ != nullptr && !isBufferMovable_ &&
callback != nullptr && callback->isBufferMovable()) {
SSL_set_mode(
ssl_.get(), SSL_get_mode(ssl_.get()) | SSL_MODE_MOVE_BUFFER_OWNERSHIP);
isBufferMovable_ = true;
}
#endif
AsyncSocket::setReadCB(callback);
}
void AsyncSSLSocket::setBufferMovableEnabled(bool enabled) {
bufferMovableEnabled_ = enabled;
}
void AsyncSSLSocket::prepareReadBuffer(void** buf, size_t* buflen) {
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 AsyncSSLSocket::handleRead() noexcept {
VLOG(5) << "AsyncSSLSocket::handleRead() this=" << this << ", fd=" << fd_
<< ", state=" << int(state_) << ", "
......@@ -1391,15 +1362,7 @@ AsyncSSLSocket::performRead(void** buf, size_t* buflen, size_t* offset) {
return AsyncSocket::performRead(buf, buflen, offset);
}
int bytes = 0;
if (!isBufferMovable_) {
bytes = SSL_read(ssl_.get(), *buf, int(*buflen));
}
#ifdef SSL_MODE_MOVE_BUFFER_OWNERSHIP
else {
bytes = SSL_read_buf(ssl_.get(), buf, (int*)offset, (int*)buflen);
}
#endif
int bytes = SSL_read(ssl_.get(), *buf, int(*buflen));
if (server_ && renegotiateAttempted_) {
LOG(ERROR) << "AsyncSSLSocket(fd=" << fd_ << ", state=" << int(state_)
......
......@@ -766,15 +766,6 @@ class AsyncSSLSocket : public virtual AsyncSocket {
return minWriteSize_;
}
void setReadCB(ReadCallback* callback) override;
/**
* Tries to enable the buffer movable experimental feature in openssl.
* This is not guaranteed to succeed in case openssl does not have
* the experimental feature built in.
*/
void setBufferMovableEnabled(bool enabled);
const AsyncTransportCertificate* getPeerCertificate() const override;
const AsyncTransportCertificate* getSelfCertificate() const override;
......@@ -855,7 +846,6 @@ class AsyncSSLSocket : public virtual AsyncSocket {
// Inherit event notification methods from AsyncSocket except
// the following.
void prepareReadBuffer(void** buf, size_t* buflen) override;
void handleRead() noexcept override;
void handleWrite() noexcept override;
void handleAccept() noexcept;
......@@ -982,7 +972,6 @@ class AsyncSSLSocket : public virtual AsyncSocket {
bool parseClientHello_{false};
bool cacheAddrOnFailure_{false};
bool bufferMovableEnabled_{false};
bool certCacheHit_{false};
std::unique_ptr<ssl::ClientHelloInfo> clientHelloInfo_;
std::vector<std::pair<char, StringPiece>> alertsReceived_;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment