', dbg_log($ctx));
+}
+
+sub show_tag ($$) {
+ my ($ctx, $res) = @_;
+ my ($git, $oid) = @$res;
+ $ctx->{git} = $git;
+ if ($ctx->{env}->{'pi-httpd.async'}) {
+ ibx_async_cat($ctx, $oid, \&show_tag_result, $ctx);
+ } else { # synchronous (generic PSGI)
+ $git->cat_async($oid, \&show_tag_result, $ctx);
+ $git->cat_async_wait;
+ }
+}
+
# user_cb for SolverGit, called as: user_cb->($result_or_error, $uarg)
sub solve_result {
my ($res, $ctx) = @_;
@@ -403,6 +472,7 @@ sub solve_result {
my ($git, $oid, $type, $size, $di) = @$res;
return show_commit($ctx, $res) if $type eq 'commit';
return show_tree($ctx, $res) if $type eq 'tree';
+ return show_tag($ctx, $res) if $type eq 'tag';
return show_other($ctx, $res) if $type ne 'blob';
my $path = to_filename($di->{path_b} // $hints->{path_b} // 'blob');
my $raw_link = "(raw)";
@@ -414,6 +484,7 @@ blob $oid $size bytes $raw_link
EOM
}
@{$ctx->{-paths}} = ($path, $raw_link);
+ bless $ctx, 'PublicInbox::WwwStream'; # for DESTROY
$ctx->{git} = $git;
if ($ctx->{env}->{'pi-httpd.async'}) {
ibx_async_cat($ctx, $oid, \&show_blob, $ctx);
@@ -483,6 +554,7 @@ sub show ($$;$) {
open $ctx->{lh}, '+>>', "$ctx->{-tmp}/solve.log" or die "open: $!";
my $solver = PublicInbox::SolverGit->new($ctx->{ibx},
\&solve_result, $ctx);
+ $solver->{gits} //= [ $ctx->{git} ];
$solver->{tmp} = $ctx->{-tmp}; # share tmpdir
# PSGI server will call this immediately and give us a callback (-wcb)
sub {