diff options
| author | Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> | 2013-02-03 19:09:06 +0900 |
|---|---|---|
| committer | Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> | 2013-02-03 19:09:06 +0900 |
| commit | 98e7018599c010b56ade294942e2e7b3d58d1bb6 (patch) | |
| tree | 21278fcd6703169e43d62d25f86d3d5cd8958de7 /src/SocketCore.cc | |
| parent | 1c9cfccac4bdd16b8c6662eab9e58d6f517424d0 (diff) | |
Fix failure to set TCP_NODELAY on Windows
On Windows setting TCP_NODELAY after non-blocking connect fails
at least on Windows 7.
Diffstat (limited to 'src/SocketCore.cc')
| -rw-r--r-- | src/SocketCore.cc | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/src/SocketCore.cc b/src/SocketCore.cc index 55c97d08..619002be 100644 --- a/src/SocketCore.cc +++ b/src/SocketCore.cc @@ -409,7 +409,8 @@ int SocketCore::getPeerInfo(std::pair<std::string, uint16_t>& peerinfo) const return sockaddr.storage.ss_family; } -void SocketCore::establishConnection(const std::string& host, uint16_t port) +void SocketCore::establishConnection(const std::string& host, uint16_t port, + bool tcpNodelay) { closeConnection(); std::string error; @@ -461,6 +462,9 @@ void SocketCore::establishConnection(const std::string& host, uint16_t port) sockfd_ = fd; // make socket non-blocking mode setNonBlockingMode(); + if(tcpNodelay) { + setTcpNodelay(true); + } if(connect(fd, rp->ai_addr, rp->ai_addrlen) == -1 && SOCKET_ERRNO != A2_EINPROGRESS) { errNum = SOCKET_ERRNO; |
