]> Sergey Matveev's repositories - public-inbox.git/commit
evcleanup: ensure deferred close from timers are handled ASAP
authorEric Wong <e@80x24.org>
Mon, 26 Dec 2016 03:05:15 +0000 (03:05 +0000)
committerEric Wong <e@80x24.org>
Mon, 26 Dec 2016 03:05:36 +0000 (03:05 +0000)
commit427245acacaf04a882d5524e662075909b96905b
tree6a50ffc3026ab512593ee4c80afbf787a3f39dc5
parentd0164b3c9048bfd733a82b8fcd53d032e97552cc
evcleanup: ensure deferred close from timers are handled ASAP

Danga::Socket defers close() syscalls until the end of the event
loop to avoid FD recycling.  Unfortunately, this is dependent on
IO events firing and waking the process up from
poll/kevent/epoll_wait.

Without any I/O activity, a socket could remain in the
@Danga::Socket::ToClose array indefinitely.  Thus, we will
trigger a fake IO event after running all timers to trigger
the deferred close in Danga::Socket::PostEventLoop.
lib/PublicInbox/EvCleanup.pm