about summary refs log tree commit homepage
path: root/lib/PublicInbox/Git.pm
diff options
context:
space:
mode:
Diffstat (limited to 'lib/PublicInbox/Git.pm')
-rw-r--r--lib/PublicInbox/Git.pm13
1 files changed, 11 insertions, 2 deletions
diff --git a/lib/PublicInbox/Git.pm b/lib/PublicInbox/Git.pm
index 265c3fb4..8a96e10c 100644
--- a/lib/PublicInbox/Git.pm
+++ b/lib/PublicInbox/Git.pm
@@ -288,10 +288,19 @@ sub src_blob_url {
         local_nick($self);
 }
 
+sub host_prefix_url ($$) {
+        my ($env, $url) = @_;
+        return $url if index($url, '//') >= 0;
+        my $scheme = $env->{'psgi.url_scheme'};
+        my $host_port = $env->{HTTP_HOST} ||
+                "$env->{SERVER_NAME}:$env->{SERVER_PORT}";
+        "$scheme://$host_port". ($env->{SCRIPT_NAME} || '/') . $url;
+}
+
 sub pub_urls {
-        my ($self) = @_;
+        my ($self, $env) = @_;
         if (my $urls = $self->{cgit_url}) {
-                return @$urls;
+                return map { host_prefix_url($env, $_) } @$urls;
         }
         local_nick($self);
 }