# HG changeset patch # User Waqas Hussain # Date 1776362422 -3600 # Node ID 57d8b5c5a4e7eefc30ef19277a0b75db0b932d9c # Parent ead9e645741aad6705df22ffba895bc8a1fb79fc net.server_epoll: Clean up timers after disconnection diff -r ead9e645741a -r 57d8b5c5a4e7 net/server_epoll.lua --- 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