summaryrefslogtreecommitdiff
path: root/src/sockets.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/sockets.cpp')
-rw-r--r--src/sockets.cpp7
1 files changed, 6 insertions, 1 deletions
diff --git a/src/sockets.cpp b/src/sockets.cpp
index 122d6b646..e95c9f7a9 100644
--- a/src/sockets.cpp
+++ b/src/sockets.cpp
@@ -324,7 +324,7 @@ void SocketIO::Connect(ConnectionSocket *s, const Anope::string &target, int por
if (c == -1)
{
if (Anope::LastErrorCode() != EINPROGRESS)
- throw SocketException("Error connecting to server: " + Anope::LastError());
+ s->OnError(Anope::LastError());
else
SocketEngine::MarkWritable(s);
}
@@ -718,6 +718,11 @@ bool ConnectionSocket::ProcessWrite()
*/
void ConnectionSocket::ProcessError()
{
+ int optval = 0;
+ socklen_t optlen = sizeof(optval);
+ getsockopt(this->GetFD(), SOL_SOCKET, SO_ERROR, &optval, &optlen);
+ errno = optval;
+ this->OnError(optval ? Anope::LastError() : "");
}
/** Called on a successful connect