diff options
author | Adam <Adam@anope.org> | 2010-09-17 17:22:14 -0400 |
---|---|---|
committer | Adam <Adam@anope.org> | 2010-09-17 17:22:14 -0400 |
commit | f71fb6e8133da955a58b1cca00013ce20c0b65cc (patch) | |
tree | 2f20ec917ac75f5876fed3f491e1668e878b9a9f /src/sockets.cpp | |
parent | 74566d869aefab16ede2fa946a0ea7b2cfed51ef (diff) |
Connect using nonblocking sockets
Diffstat (limited to 'src/sockets.cpp')
-rw-r--r-- | src/sockets.cpp | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/src/sockets.cpp b/src/sockets.cpp index 4334bf873..7d1c2e07c 100644 --- a/src/sockets.cpp +++ b/src/sockets.cpp @@ -404,6 +404,8 @@ void Socket::Write(const Anope::string &message) */ ClientSocket::ClientSocket(const Anope::string &nTargetHost, int nPort, const Anope::string &nBindHost, bool nIPv6, int type) : Socket(0, nIPv6, type), TargetHost(nTargetHost), Port(nPort), BindHost(nBindHost) { + this->SetNonBlocking(); + if (!BindHost.empty()) { sockaddrs bindaddr; @@ -414,10 +416,8 @@ ClientSocket::ClientSocket(const Anope::string &nTargetHost, int nPort, const An sockaddrs conaddr; conaddr.pton(IPv6 ? AF_INET6 : AF_INET, TargetHost, Port); - if (connect(Sock, &conaddr.sa, conaddr.size()) == -1) + if (connect(Sock, &conaddr.sa, conaddr.size()) == -1 && errno != EINPROGRESS) throw SocketException(Anope::string("Error connecting to server: ") + strerror(errno)); - - this->SetNonBlocking(); } /** Default destructor @@ -445,6 +445,8 @@ ListenSocket::ListenSocket(const Anope::string &bindip, int port) : Socket(0, (b BindIP = bindip; Port = port; + this->SetNonBlocking(); + sockaddrs sockaddr; sockaddr.pton(IPv6 ? AF_INET6 : AF_INET, BindIP, Port); @@ -453,8 +455,6 @@ ListenSocket::ListenSocket(const Anope::string &bindip, int port) : Socket(0, (b if (listen(Sock, 5) == -1) throw SocketException(Anope::string("Unable to listen: ") + strerror(errno)); - - this->SetNonBlocking(); } /** Destructor |