summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLibravatar Jakub Narebski <jnareb@gmail.com>2010-06-05 23:11:18 +0200
committerLibravatar Junio C Hamano <gitster@pobox.com>2010-06-11 08:54:35 -0700
commit45aa9895c5bef3914b6f3707b983f7a53900ebb7 (patch)
tree8502c99969f0b31838cde7ccd3dfd7b0172727c3
parentgitweb: Add support for FastCGI, using CGI::Fast (diff)
downloadtgif-45aa9895c5bef3914b6f3707b983f7a53900ebb7.tar.xz
gitweb: Run in FastCGI mode if gitweb script has .fcgi extension
If the name of the script ($SCRIPT_NAME or $SCRIPT_FILENAME CGI environment variable, or __FILE__ literal) ends with '.fcgi' extension, run gitweb in FastCGI mode, as if it was run with '--fastcgi' / '--fcgi' option. This is intended for easy deploying gitweb using FastCGI interface. Signed-off-by: Jakub Narebski <jnareb@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
-rwxr-xr-xgitweb/gitweb.perl21
1 files changed, 13 insertions, 8 deletions
diff --git a/gitweb/gitweb.perl b/gitweb/gitweb.perl
index b044d18aca..e39ef866f0 100755
--- a/gitweb/gitweb.perl
+++ b/gitweb/gitweb.perl
@@ -1025,19 +1025,24 @@ our $is_last_request = sub { 1 };
our ($pre_dispatch_hook, $post_dispatch_hook, $pre_listen_hook);
our $CGI = 'CGI';
our $cgi;
+sub configure_as_fcgi {
+ require CGI::Fast;
+ our $CGI = 'CGI::Fast';
+
+ my $request_number = 0;
+ # let each child service 100 requests
+ our $is_last_request = sub { ++$request_number > 100 };
+}
sub evaluate_argv {
+ my $script_name = $ENV{'SCRIPT_NAME'} || $ENV{'SCRIPT_FILENAME'} || __FILE__;
+ configure_as_fcgi()
+ if $script_name =~ /\.fcgi$/;
+
return unless (@ARGV);
require Getopt::Long;
Getopt::Long::GetOptions(
- 'fastcgi|fcgi|f' => sub {
- require CGI::Fast;
- our $CGI = 'CGI::Fast';
-
- my $request_number = 0;
- # let each child service 100 requests
- our $is_last_request = sub { ++$request_number > 100 };
- },
+ 'fastcgi|fcgi|f' => \&configure_as_fcgi,
'nproc|n=i' => sub {
my ($arg, $val) = @_;
return unless eval { require FCGI::ProcManager; 1; };