diff --git a/net/server_epoll.lua b/net/server_epoll.lua index 5c65d2278..cffd3a844 100644 --- a/net/server_epoll.lua +++ b/net/server_epoll.lua @@ -355,15 +355,18 @@ function interface:onreadable() self:onconnect(); self:on("incoming", data); else - if partial and partial ~= "" then - self:onconnect(); - self:on("incoming", partial, err); - end if err == "wantread" then self:set(true, nil); + err = "timeout"; elseif err == "wantwrite" then self:set(nil, true); - elseif err ~= "timeout" then + err = "timeout"; + end + if partial and partial ~= "" then + self:onconnect(); + self:on("incoming", partial, err); + end + if err ~= "timeout" then self:on("disconnect", err); self:destroy() return;