summaryrefslogtreecommitdiff
path: root/src/SocketCore.cc
diff options
context:
space:
mode:
authorTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2013-02-03 19:09:06 +0900
committerTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2013-02-03 19:09:06 +0900
commit98e7018599c010b56ade294942e2e7b3d58d1bb6 (patch)
tree21278fcd6703169e43d62d25f86d3d5cd8958de7 /src/SocketCore.cc
parent1c9cfccac4bdd16b8c6662eab9e58d6f517424d0 (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.cc6
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;