return -1;
}
- bool cork = isSet(flags, WriteFlags::CORK) || persistentCork_;
+ bool cork = isSet(flags, WriteFlags::CORK);
CorkGuard guard(fd_, count > 1, cork, &corked_);
#if 0
static void sslInfoCallback(const SSL *ssl, int type, int val);
+ // Whether we've applied the TCP_CORK option to the socket
+ bool corked_{false};
// SSL related members.
bool server_{false};
// Used to prevent client-initiated renegotiation. Note that AsyncSSLSocket
return 0;
}
-void AsyncSocket::setPersistentCork(bool cork) {
- if (setCork(cork) == 0) {
- persistentCork_ = cork;
- }
-}
-
-int AsyncSocket::setCork(bool cork) {
-#ifdef TCP_CORK
- if (fd_ < 0) {
- VLOG(4) << "AsyncSocket::setCork() called on non-open socket "
- << this << "(stats=" << state_ << ")";
- return EINVAL;
- }
-
- if (corked_ == cork) {
- return 0;
- }
-
- int flag = cork ? 1 : 0;
- if (setsockopt(fd_, IPPROTO_TCP, TCP_CORK, &flag, sizeof(flag)) != 0) {
- int errnoCopy = errno;
- VLOG(2) << "faield to turn on TCP_CORK option on AsyncSocket"
- << this << "(fd=" << fd_ << ", state=" << state_ << "):"
- << folly::errnoStr(errnoCopy);
- return errnoCopy;
- }
- corked_ = cork;
-#endif
- return 0;
-}
-
void AsyncSocket::ioReady(uint16_t events) noexcept {
VLOG(7) << "AsyncSocket::ioRead() this=" << this << ", fd" << fd_
<< ", events=" << std::hex << events << ", state=" << state_;
#define SO_SET_NAMESPACE 41
int setTCPProfile(int profd);
- /**
- * Set TCP_CORK on the socket, and turn on/off the persistentCork_ flag
- *
- * When persistentCork_ is true, CorkGuard in AsyncSSLSocket will not be
- * able to toggle TCP_CORK
- *
- */
- void setPersistentCork(bool cork);
-
/**
* Generic API for reading a socket option.
*
std::string withAddr(const std::string& s);
- /**
- * Set TCP_CORK on this socket
- *
- * @return 0 if Cork is turned on, or non-zero errno on error
- */
- int setCork(bool cork);
-
StateEnum state_; ///< StateEnum describing current state
uint8_t shutdownFlags_; ///< Shutdown state (ShutdownFlags)
uint16_t eventFlags_; ///< EventBase::HandlerFlags settings
std::chrono::steady_clock::time_point connectStartTime_;
std::chrono::steady_clock::time_point connectEndTime_;
- // Whether this connection is persistently corked
- bool persistentCork_{false};
- // Whether we've applied the TCP_CORK option to the socket
- bool corked_{false};
-
BufferCallback* bufferCallback_{nullptr};
};
#ifdef _MSC_VER