Mercurial > prosody-hg
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(); |
