Changeset 1563


Ignore:
Timestamp:
12/24/08 00:22:13 (3 years ago)
Author:
GilmarSantosJr
Message:

Item6042: hack to force execution under -T switch. Fixed a warning about empty $ENV{PATH_INFO}

Location:
trunk/FastCGIEngineContrib
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/FastCGIEngineContrib/bin/foswiki.fcgi

    r1349 r1563  
    1 #!/usr/bin/perl -w 
     1#!/usr/bin/perl 
    22# Foswiki - The Free and Open Source Wiki, http://foswiki.org/ 
    33# 
     
    2525 
    2626use strict; 
    27 use warnings; 
    2827 
    2928BEGIN { 
    3029    $Foswiki::cfg{Engine} = 'Foswiki::Engine::FastCGI'; 
    31     @INC = ('.', grep { $_ ne '.' } @INC); 
     30    @INC = ( '.', grep { $_ ne '.' } @INC ); 
    3231    delete $ENV{FOSWIKI_ACTION} if exists $ENV{FOSWIKI_ACTION}; 
    3332    require 'setlib.cfg'; 
     
    3635use Getopt::Long; 
    3736use Pod::Usage; 
     37use Foswiki; 
     38use Foswiki::UI; 
     39 
     40eval { eval substr($0, 0, 0) }; 
     41Foswiki::Engine::FastCGI::reExec() unless $@; 
    3842 
    3943my ( $listen, $nproc, $pidfile, $manager, $detach, $help ); 
     
    4953pod2usage(1) if $help; 
    5054 
    51 use Foswiki; 
    52 use Foswiki::UI; 
    53  
    5455$Foswiki::engine->run( 
    5556    $listen, 
    56     {   nproc         => $nproc, 
    57         pidfile       => $pidfile, 
    58         manager       => $manager, 
    59         detach        => $detach, 
     57    { 
     58        nproc   => $nproc, 
     59        pidfile => $pidfile, 
     60        manager => $manager, 
     61        detach  => $detach, 
    6062    } 
    6163); 
  • trunk/FastCGIEngineContrib/lib/Foswiki/Engine/FastCGI.pm

    r1354 r1563  
    3535 
    3636use FCGI; 
    37 use IO::Handle; 
    3837 
    3938sub run { 
     
    4140 
    4241    my $sock = 0; 
    43     if ( $listen ) { 
    44         $sock = FCGI::OpenSocket( $listen, 100) 
     42    if ($listen) { 
     43        $sock = FCGI::OpenSocket( $listen, 100 ) 
    4544          or die "Failed to create FastCGI socket: $!"; 
    4645    } 
    4746    my %env = (); 
    4847    $args ||= {}; 
    49     my $r = FCGI::Request( \*STDIN, \*STDOUT, \*STDERR, \%ENV, $sock, &FCGI::FAIL_ACCEPT_ON_INTR); 
     48    my $r = FCGI::Request( \*STDIN, \*STDOUT, \*STDERR, \%ENV, $sock, 
     49        &FCGI::FAIL_ACCEPT_ON_INTR ); 
    5050    my $manager; 
    51      
     51 
    5252    if ($listen) { 
    5353        $args->{manager} ||= 'FCGI::ProcManager'; 
     
    7575        CGI::initialize_globals(); 
    7676        my $req = $this->prepare; 
    77         if ( UNIVERSAL::isa($req, 'Foswiki::Request') ) { 
     77        if ( UNIVERSAL::isa( $req, 'Foswiki::Request' ) ) { 
    7878            my $res = Foswiki::UI::handleRequest($req); 
    7979            $this->finalize( $res, $req ); 
     
    101101    # way, SUPER::preparePath works fine. 
    102102 
    103     $ENV{PATH_INFO} =~ s#^$Foswiki::cfg{ScriptUrlPath}/*#/#; 
     103    $ENV{PATH_INFO} =~ s#^$Foswiki::cfg{ScriptUrlPath}/*#/# 
     104      if $ENV{PATH_INFO}; 
    104105    $this->SUPER::preparePath(@_); 
    105106} 
    106107 
    107108sub write { 
    108     my ($this, $buffer) = @_; 
     109    my ( $this, $buffer ) = @_; 
    109110    syswrite STDOUT, $buffer; 
     111} 
     112 
     113sub reExec { 
     114    require Config; 
     115    $ENV{PERL5LIB} .= join $Config::Config{path_sep}, @INC; 
     116    $ENV{PATH} = $Foswiki::cfg{SafeEnvPath}; 
     117    my $perl = $Config::Config{perlpath}; 
     118    my ($script) = $0 =~ /^(.*)$/; 
     119    exec $perl, '-wT', $script, map { /^(.*)$/; $1 } @ARGV; 
    110120} 
    111121 
     
    127137    umask(0); 
    128138    chdir '/'; 
    129     open STDIN, "+</dev/null" or die $!; 
    130     open STDOUT, ">&STDIN"    or die $!; 
    131     open STDERR, ">&STDIN"    or die $!; 
     139    open STDIN,  "+</dev/null" or die $!; 
     140    open STDOUT, ">&STDIN"     or die $!; 
     141    open STDERR, ">&STDIN"     or die $!; 
    132142    POSIX::setsid(); 
    133143} 
Note: See TracChangeset for help on using the changeset viewer.