Changeset 23556

Show
Ignore:
Timestamp:
11/13/08 18:57:39 (5 years ago)
Author:
tokuhirom
Message:

POST がうごいてなかったので調整

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • lang/perl/MENTA/trunk/bin/cgi-server.pl

    r23555 r23556  
    1414 
    1515    sub TIEHANDLE { 
    16         my ($class, $bufref) = @_; 
    17         bless {buf => $bufref}, $class; 
     16        my ($class, $in, $outref) = @_; 
     17        bless {out => $outref, in => $in, pos => 0}, $class; 
    1818    } 
    1919 
    2020    sub WRITE { 
    2121        my $self = shift; 
    22         ${$self->{buf}} .= shift; 
     22        ${$self->{out}} .= shift; 
    2323    } 
    2424 
    25     sub READ { croak "このハンドルは読み込み専用です" } 
     25    # $self->READ(buf, len, offset); 
     26    # copy from IO::Scalar 
     27    sub READ { 
     28        my $self = $_[0]; 
     29        my $n    = $_[2]; 
     30        my $off  = $_[3] || 0; 
     31 
     32        my $read = substr( $self->{in}, $self->{pos}, $n ); 
     33        $n = length($read); 
     34        $self->{pos} += $n; 
     35        ( $off ? substr( $_[1], $off ) : $_[1] ) = $read; 
     36        return $n; 
     37    } 
    2638    sub CLOSE { } 
    2739} 
     
    3345    sub bind_stdout { 
    3446        my ($code, ) = @_; 
    35         tie *STDOUT, 'MENTA::BindSTDOUT::Tie', \my $out; 
     47        my $in; 
     48        read(STDIN, $in, $ENV{CONTENT_LENGTH}); 
     49        tie *STDOUT, 'MENTA::BindSTDOUT::Tie', $in, \my $out; 
    3650        $code->(); 
    3751        untie *STDOUT; 
     
    4256        my $pid = fork(); 
    4357        if ($pid) { 
    44             close STDIN; 
    45             close STDOUT; 
    4658            waitpid($pid, POSIX::WNOHANG); 
    4759        } elsif ($pid == 0) { 
     
    6577} 
    6678 
    67 MENTA::Server->new(5555)->run; 
     79my $server = MENTA::Server->new(5555); 
     80$server->run; 
    6881