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() { ...@@ -1331,35 +1331,6 @@ void AsyncSSLSocket::scheduleConnectTimeout() {
AsyncSocket::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 { void AsyncSSLSocket::handleRead() noexcept {
VLOG(5) << "AsyncSSLSocket::handleRead() this=" << this << ", fd=" << fd_ VLOG(5) << "AsyncSSLSocket::handleRead() this=" << this << ", fd=" << fd_
<< ", state=" << int(state_) << ", " << ", state=" << int(state_) << ", "
...@@ -1391,15 +1362,7 @@ AsyncSSLSocket::performRead(void** buf, size_t* buflen, size_t* offset) { ...@@ -1391,15 +1362,7 @@ AsyncSSLSocket::performRead(void** buf, size_t* buflen, size_t* offset) {
return AsyncSocket::performRead(buf, buflen, offset); return AsyncSocket::performRead(buf, buflen, offset);
} }
int bytes = 0; int bytes = SSL_read(ssl_.get(), *buf, int(*buflen));
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
if (server_ && renegotiateAttempted_) { if (server_ && renegotiateAttempted_) {
LOG(ERROR) << "AsyncSSLSocket(fd=" << fd_ << ", state=" << int(state_) LOG(ERROR) << "AsyncSSLSocket(fd=" << fd_ << ", state=" << int(state_)
......
...@@ -766,15 +766,6 @@ class AsyncSSLSocket : public virtual AsyncSocket { ...@@ -766,15 +766,6 @@ class AsyncSSLSocket : public virtual AsyncSocket {
return minWriteSize_; 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* getPeerCertificate() const override;
const AsyncTransportCertificate* getSelfCertificate() const override; const AsyncTransportCertificate* getSelfCertificate() const override;
...@@ -855,7 +846,6 @@ class AsyncSSLSocket : public virtual AsyncSocket { ...@@ -855,7 +846,6 @@ class AsyncSSLSocket : public virtual AsyncSocket {
// Inherit event notification methods from AsyncSocket except // Inherit event notification methods from AsyncSocket except
// the following. // the following.
void prepareReadBuffer(void** buf, size_t* buflen) override;
void handleRead() noexcept override; void handleRead() noexcept override;
void handleWrite() noexcept override; void handleWrite() noexcept override;
void handleAccept() noexcept; void handleAccept() noexcept;
...@@ -982,7 +972,6 @@ class AsyncSSLSocket : public virtual AsyncSocket { ...@@ -982,7 +972,6 @@ class AsyncSSLSocket : public virtual AsyncSocket {
bool parseClientHello_{false}; bool parseClientHello_{false};
bool cacheAddrOnFailure_{false}; bool cacheAddrOnFailure_{false};
bool bufferMovableEnabled_{false};
bool certCacheHit_{false}; bool certCacheHit_{false};
std::unique_ptr<ssl::ClientHelloInfo> clientHelloInfo_; std::unique_ptr<ssl::ClientHelloInfo> clientHelloInfo_;
std::vector<std::pair<char, StringPiece>> alertsReceived_; 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