Bugfix CGI Routing - $0 wird bei MatchAlias auf dispatcher.pl nicht richtig gesetzt.
authorSven Schöling <s.schoeling@linet-services.de>
Fri, 17 Sep 2010 12:53:40 +0000 (14:53 +0200)
committerSven Schöling <s.schoeling@linet-services.de>
Fri, 17 Sep 2010 12:53:40 +0000 (14:53 +0200)
Die ursprüngliche Version zieht sich den aufgrufenen Scriptnamen aus $0. Das
funktioniert aber nur in der Symlinkversion. Wenn ein Matchalias auf das Script
gesetzt wird, muss der Scriptname aus %ENV geholt werden. Da das bei FCGI
sowieso schon gemacht wird, das einfach zum Standard erklärt, und dafür das
unrequire vereinfacht.

SL/Dispatcher.pm

index 2c0539b..8bd2968 100644 (file)
@@ -130,13 +130,9 @@ sub handle_request {
   my $interface = lc(shift || 'cgi');
   my ($script_name, $action);
 
-  if ($interface =~ m/^(?:fastcgi|fcgid|fcgi)$/) {
-    $script_name = $ENV{SCRIPT_NAME};
-    unrequire_bin_mozilla();
+  $script_name = $ENV{SCRIPT_NAME};
 
-  } else {
-    $script_name = $0;
-  }
+  unrequire_bin_mozilla($interface);
 
   $::cgi         = CGI->new('');
   $::locale      = Locale->new($::language);
@@ -205,6 +201,8 @@ sub handle_request {
 }
 
 sub unrequire_bin_mozilla {
+  return unless $_[0] =~ m/^(?:fastcgi|fcgid|fcgi)$/;
+
   for (keys %INC) {
     next unless m#^bin/mozilla/#;
     next if /\bcommon.pl$/;