comparison 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
comparison
equal deleted inserted replaced
14155:ead9e645741a 14156:57d8b5c5a4e7
104 104
105 -- Keep track of recently closed timers to avoid re-adding them 105 -- Keep track of recently closed timers to avoid re-adding them
106 local closedtimers = {}; 106 local closedtimers = {};
107 107
108 local function closetimer(id) 108 local function closetimer(id)
109 if timers:remove(id) then 109 closedtimers[id] = true;
110 closedtimers[id] = true; 110 timers:remove(id);
111 end
112 end 111 end
113 112
114 local function reschedule(id, time) 113 local function reschedule(id, time)
115 time = monotonic() + time; 114 time = monotonic() + time;
116 timers:reprioritize(id, time); 115 timers:reprioritize(id, time);
593 end 592 end
594 end 593 end
595 594
596 function interface:destroy() 595 function interface:destroy()
597 self:del(); 596 self:del();
597 if self._pausefor then
598 closetimer(self._pausefor);
599 self._pausefor = nil;
600 end
598 self:setwritetimeout(false); 601 self:setwritetimeout(false);
599 self:setreadtimeout(false); 602 self:setreadtimeout(false);
600 self.onreadable = noop; 603 self.onreadable = noop;
601 self.onwritable = noop; 604 self.onwritable = noop;
602 self.destroy = noop; 605 self.destroy = noop;
820 end 823 end
821 if t == false then return; end 824 if t == false then return; end
822 self:set(false); 825 self:set(false);
823 self._pausefor = addtimer(t, function () 826 self._pausefor = addtimer(t, function ()
824 self._pausefor = nil; 827 self._pausefor = nil;
828 if not self.conn then
829 return;
830 end
825 self:set(true); 831 self:set(true);
826 self:noise("Resuming after pause"); 832 self:noise("Resuming after pause");
827 if self.conn and self.conn:dirty() then 833 if self.conn and self.conn:dirty() then
828 self:noise("Have buffered incoming data to process"); 834 self:noise("Have buffered incoming data to process");
829 self:onreadable(); 835 self:onreadable();