summaryrefslogtreecommitdiff
path: root/src/sockets.cpp
diff options
context:
space:
mode:
authorAdam <Adam@anope.org>2010-09-17 17:22:14 -0400
committerAdam <Adam@anope.org>2010-09-17 17:22:14 -0400
commitf71fb6e8133da955a58b1cca00013ce20c0b65cc (patch)
tree2f20ec917ac75f5876fed3f491e1668e878b9a9f /src/sockets.cpp
parent74566d869aefab16ede2fa946a0ea7b2cfed51ef (diff)
Connect using nonblocking sockets
Diffstat (limited to 'src/sockets.cpp')
-rw-r--r--src/sockets.cpp10
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