aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMatthew Wild <mwild1@gmail.com>2018-02-23 15:33:02 +0000
committerMatthew Wild <mwild1@gmail.com>2018-02-23 15:33:02 +0000
commit184e6e34f0c0942ed6d3779c644a715973234b15 (patch)
tree66dbccd699d40147f9f15b281aca93cfd11c726c
parent17f7c8bc3a0b9ede9507c39245cddd8f1260cc7e (diff)
downloadprosody-184e6e34f0c0942ed6d3779c644a715973234b15.tar.gz
prosody-184e6e34f0c0942ed6d3779c644a715973234b15.zip
net.server_event: Better outgoing connection error handling
Same as 67311cda0625. Check for readability. If a socket is readable after initial connection, it likely means an error, so we call the readcallback for that connection to handle it (and ultimately close).
-rw-r--r--net/server_event.lua4
1 files changed, 3 insertions, 1 deletions
diff --git a/net/server_event.lua b/net/server_event.lua
index fd456deb..bc1cc094 100644
--- a/net/server_event.lua
+++ b/net/server_event.lua
@@ -105,6 +105,8 @@ function interface_mt:_start_connection(plainssl) -- called from wrapclient
self:ontimeout() -- call timeout listener
self:_close()
debug( "new connection failed. id:", self.id, "error:", self.fatalerror )
+ elseif EV_READWRITE == event then
+ self.readcallback(event);
else
if plainssl and has_luasec then -- start ssl session
self:starttls(self._sslctx, true)
@@ -116,7 +118,7 @@ function interface_mt:_start_connection(plainssl) -- called from wrapclient
self.eventconnect = nil
return -1
end
- self.eventconnect = addevent( base, self.conn, EV_WRITE, callback, cfg.CONNECT_TIMEOUT )
+ self.eventconnect = addevent( base, self.conn, EV_READWRITE, callback, cfg.CONNECT_TIMEOUT )
return true
end
function interface_mt:_start_session(call_onconnect) -- new session, for example after startssl