about summary refs log tree commit homepage
diff options
context:
space:
mode:
authorEric Wong <e@80x24.org>2017-02-24 00:47:45 +0000
committerEric Wong <e@80x24.org>2017-02-24 01:59:33 +0000
commitee6b0dac82b05ef83b497787591de8b3645e0288 (patch)
treed852399f357bbf4a4d7e23cd06b82d71564e086d
parentc1043e6471fdd5d88ceb6ed53a6af330d20b85a7 (diff)
downloadpublic-inbox-ee6b0dac82b05ef83b497787591de8b3645e0288.tar.gz
We don't actually know what context we'll be called under,
so detecting the mere use-ability of Danga::Socket is not
sufficient.
-rw-r--r--lib/PublicInbox/Git.pm13
-rw-r--r--t/git_async.t10
2 files changed, 12 insertions, 11 deletions
diff --git a/lib/PublicInbox/Git.pm b/lib/PublicInbox/Git.pm
index caca3b09..3ca0b680 100644
--- a/lib/PublicInbox/Git.pm
+++ b/lib/PublicInbox/Git.pm
@@ -274,12 +274,13 @@ sub cat_async_compat ($$$) {
         fail($self, 'newline missing after blob') if ($r != 1 || $buf ne "\n");
 }
 
-if ($have_async) {
-        *check_async = *check_async_ds;
-        *cat_async = *cat_async_ds;
-} else {
-        *check_async = *check_async_compat;
-        *cat_async = *cat_async_compat;
+sub check_async {
+        my ($self, $env, $obj, $cb) = @_;
+        if ($env->{'pi-httpd.async'}) {
+                check_async_ds($self, $obj, $cb);
+        } else {
+                check_async_compat($self, $obj, $cb);
+        }
 }
 
 1;
diff --git a/t/git_async.t b/t/git_async.t
index c20d48e3..4f7e4ebe 100644
--- a/t/git_async.t
+++ b/t/git_async.t
@@ -41,7 +41,7 @@ my $dir = "$tmpdir/git.git";
                 }
                 0
         });
-        $git->check_async($f, sub {
+        $git->check_async_ds($f, sub {
                 $n++;
                 @args = @_;
                 $git = undef;
@@ -58,7 +58,7 @@ my $dir = "$tmpdir/git.git";
         my $m = 0;
         for my $i (0..$max) {
                 my $k = "HEAD:m$i";
-                $git->check_async($k, sub {
+                $git->check_async_ds($k, sub {
                         my ($info) = @_;
                         ++$n;
                         ++$m if $info->[1] eq 'missing' && $info->[0] eq $k;
@@ -70,18 +70,18 @@ my $dir = "$tmpdir/git.git";
                 }
         }
         is($m, $n, 'everything expected missing is missing');
-        $git->check_async($f, sub { $git = undef });
+        $git->check_async_ds($f, sub { $git = undef });
         Danga::Socket->EventLoop;
 
         $git = PublicInbox::Git->new($dir);
         my $info;
         my $str = '';
         my @missing;
-        $git->cat_async('HEAD:miss', sub {
+        $git->cat_async_ds('HEAD:miss', sub {
                 my ($miss) = @_;
                 push @missing, $miss;
         });
-        $git->cat_async($f, sub {
+        $git->cat_async_ds($f, sub {
                 my $res = $_[0];
                 if (ref($res) eq 'ARRAY') {
                         is($info, undef, 'info unset, setting..');