about summary refs log tree commit homepage
path: root/lib/PublicInbox/EvCleanup.pm
diff options
context:
space:
mode:
authorEric Wong <e@80x24.org>2016-12-26 05:25:36 +0000
committerEric Wong <e@80x24.org>2016-12-26 05:25:36 +0000
commite36899b149ecb7cc56f88a6078b18b211ac3c793 (patch)
treeda8a6e07234a815b3782f1a659f6dee1122959d1 /lib/PublicInbox/EvCleanup.pm
parentb388dfdd96804f898fbf72baf2a32e0c9f0fb3f1 (diff)
parent427245acacaf04a882d5524e662075909b96905b (diff)
downloadpublic-inbox-e36899b149ecb7cc56f88a6078b18b211ac3c793.tar.gz
* origin/master: (25 commits)
  evcleanup: ensure deferred close from timers are handled ASAP
  httpd/async: improve variable naming
  githttpbackend: minor cleanups to improve readability
  githttpbackend: simplify compatibility code
  githttpbackend: minor readability improvement
  http: fix clobbering of $null_io
  linkify: modify argument in place
  view: do not modify array during iteration
  view: stop chomping off whitespace at ends of messages
  view: remove unused parameter
  search: lookup_mail handles modified DBs
  doc: various comments on async handling
  searchthread: simplify API and remove needless OO
  searchthread: update comment about loop prevention
  searchmsg: remove ensure_metadata
  tests: add thread-all testing for benchmarking
  searchmsg: do not memoize {date} field
  searchmsg: remove locale-dependency for ->date
  t/config.t: fix feedmax default
  wwwtext: link to RFC4685 (Atom Threading)
  ...
Diffstat (limited to 'lib/PublicInbox/EvCleanup.pm')
-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 {