Mercurial > prosody-hg
diff net/server_epoll.lua @ 14156:57d8b5c5a4e7 0.12
net.server_epoll: Clean up timers after disconnection
| author | Waqas Hussain <waqas20@gmail.com> |
|---|---|
| date | Thu, 16 Apr 2026 19:00:22 +0100 |
| parents | cba0b93320b7 |
| children | e3ddbf7f2d3f |
line wrap: on
line diff
--- a/net/server_epoll.lua Thu Apr 16 18:59:56 2026 +0100 +++ b/net/server_epoll.lua Thu Apr 16 19:00:22 2026 +0100 @@ -106,9 +106,8 @@ local closedtimers = {}; local function closetimer(id) - if timers:remove(id) then - closedtimers[id] = true; - end + closedtimers[id] = true; + timers:remove(id); end local function reschedule(id, time) @@ -595,6 +594,10 @@ function interface:destroy() self:del(); + if self._pausefor then + closetimer(self._pausefor); + self._pausefor = nil; + end self:setwritetimeout(false); self:setreadtimeout(false); self.onreadable = noop; @@ -822,6 +825,9 @@ self:set(false); self._pausefor = addtimer(t, function () self._pausefor = nil; + if not self.conn then + return; + end self:set(true); self:noise("Resuming after pause"); if self.conn and self.conn:dirty() then
