# HG changeset patch # User Kim Alvefur # Date 1553772674 -3600 # Node ID 485231f8b75d0ac679d1a2cf857a1ef1f0f6be91 # Parent 68faa0c1a99c2a5ce2db532cc87fbb68ed67a1b3 net.server_epoll: Handle LuaSec wantread/wantwrite conditions before callbacks (fixes #1333) This prevents the :set(true) call from resuming a connection that was paused in the onincoming callback. diff -r 68faa0c1a99c -r 485231f8b75d net/server_epoll.lua --- a/net/server_epoll.lua Mon Jan 14 00:17:02 2019 +0100 +++ b/net/server_epoll.lua Thu Mar 28 12:31:14 2019 +0100 @@ -355,15 +355,18 @@ self:onconnect(); self:on("incoming", data); else + if err == "wantread" then + self:set(true, nil); + err = "timeout"; + elseif err == "wantwrite" then + self:set(nil, true); + err = "timeout"; + end if partial and partial ~= "" then self:onconnect(); self:on("incoming", partial, err); end - if err == "wantread" then - self:set(true, nil); - elseif err == "wantwrite" then - self:set(nil, true); - elseif err ~= "timeout" then + if err ~= "timeout" then self:on("disconnect", err); self:destroy() return;