about summary refs log tree commit homepage
diff options
context:
space:
mode:
-rw-r--r--lib/PublicInbox/EvCleanup.pm14
1 files changed, 12 insertions, 2 deletions
diff --git a/lib/PublicInbox/EvCleanup.pm b/lib/PublicInbox/EvCleanup.pm
index 2b77c617..b9fe843b 100644
--- a/lib/PublicInbox/EvCleanup.pm
+++ b/lib/PublicInbox/EvCleanup.pm
@@ -30,9 +30,19 @@ sub _run_all ($) {
         $_->() foreach @$run;
 }
 
+# ensure Danga::Socket::ToClose fires after timers fire
+sub _asap_close () { $asapq->[1] ||= _asap_timer() }
+
 sub _run_asap () { _run_all($asapq) }
-sub _run_next () { _run_all($nextq) }
-sub _run_later () { _run_all($laterq) }
+sub _run_next () {
+        _run_all($nextq);
+        _asap_close();
+}
+
+sub _run_later () {
+        _run_all($laterq);
+        _asap_close();
+}
 
 # Called by Danga::Socket
 sub event_write {