Annotation of embedaddon/lighttpd/tests/mod-fastcgi.t, revision 1.1

1.1     ! misho       1: #!/usr/bin/env perl
        !             2: BEGIN {
        !             3:        # add current source dir to the include-path
        !             4:        # we need this for make distcheck
        !             5:        (my $srcdir = $0) =~ s,/[^/]+$,/,;
        !             6:        unshift @INC, $srcdir;
        !             7: }
        !             8: 
        !             9: use strict;
        !            10: use Test::More tests => 58;
        !            11: use LightyTest;
        !            12: 
        !            13: my $tf = LightyTest->new();
        !            14: 
        !            15: my $t;
        !            16: my $php_child = -1;
        !            17: 
        !            18: my $phpbin = (defined $ENV{'PHP'} ? $ENV{'PHP'} : '/usr/bin/php-cgi');
        !            19: $ENV{'PHP'} = $phpbin;
        !            20: 
        !            21: SKIP: {
        !            22:        skip "PHP already running on port 1026", 1 if $tf->listening_on(1026);
        !            23:        skip "no php binary found", 1 unless -x $phpbin;
        !            24:        ok(-1 != ($php_child = $tf->spawnfcgi($phpbin, 1026)), "Spawning php");
        !            25: }
        !            26: 
        !            27: SKIP: {
        !            28:        skip "no PHP running on port 1026", 35 unless $tf->listening_on(1026);
        !            29: 
        !            30:        ok($tf->start_proc == 0, "Starting lighttpd") or goto cleanup;
        !            31: 
        !            32:        $t->{REQUEST} = ( <<EOF
        !            33: GET /phpinfo.php HTTP/1.0
        !            34: Host: www.example.org
        !            35: EOF
        !            36:  );
        !            37:        $t->{RESPONSE} = [ { 'HTTP-Protocol' => 'HTTP/1.0', 'HTTP-Status' => 200 } ];
        !            38:        ok($tf->handle_http($t) == 0, 'valid request');
        !            39: 
        !            40:        $t->{REQUEST}  = ( <<EOF
        !            41: GET /phpinfofoobar.php HTTP/1.0
        !            42: Host: www.example.org
        !            43: EOF
        !            44:  );
        !            45:        $t->{RESPONSE} = [ { 'HTTP-Protocol' => 'HTTP/1.0', 'HTTP-Status' => 404 } ];
        !            46:        ok($tf->handle_http($t) == 0, 'file not found');
        !            47: 
        !            48:        $t->{REQUEST}  = ( <<EOF
        !            49: GET /go/ HTTP/1.0
        !            50: Host: www.example.org
        !            51: EOF
        !            52:  );
        !            53:        $t->{RESPONSE} = [ { 'HTTP-Protocol' => 'HTTP/1.0', 'HTTP-Status' => 200 } ];
        !            54:        ok($tf->handle_http($t) == 0, 'index-file handling');
        !            55: 
        !            56:        $t->{REQUEST}  = ( <<EOF
        !            57: GET /redirect.php HTTP/1.0
        !            58: Host: www.example.org
        !            59: EOF
        !            60:  );
        !            61:        $t->{RESPONSE} = [ { 'HTTP-Protocol' => 'HTTP/1.0', 'HTTP-Status' => 302, 'Location' => 'http://www.example.org:2048/' } ];
        !            62:        ok($tf->handle_http($t) == 0, 'Status + Location via FastCGI');
        !            63: 
        !            64:        $t->{REQUEST}  = ( <<EOF
        !            65: GET /redirect.php/ HTTP/1.0
        !            66: Host: www.example.org
        !            67: EOF
        !            68:  );
        !            69:        $t->{RESPONSE} = [ { 'HTTP-Protocol' => 'HTTP/1.0', 'HTTP-Status' => 302, 'Location' => 'http://www.example.org:2048/' } ];
        !            70:        ok($tf->handle_http($t) == 0, 'Trailing slash as path-info (#1989: workaround broken operating systems)');
        !            71: 
        !            72:        $t->{REQUEST}  = ( <<EOF
        !            73: GET /get-server-env.php?env=PHP_SELF HTTP/1.0
        !            74: Host: www.example.org
        !            75: EOF
        !            76:  );
        !            77:        $t->{RESPONSE} = [ { 'HTTP-Protocol' => 'HTTP/1.0', 'HTTP-Status' => 200 } ];
        !            78:        ok($tf->handle_http($t) == 0, '$_SERVER["PHP_SELF"]');
        !            79: 
        !            80:        $t->{REQUEST}  = ( <<EOF
        !            81: GET /get-server-env.php/foo?env=SCRIPT_NAME HTTP/1.0
        !            82: Host: www.example.org
        !            83: EOF
        !            84:  );
        !            85:        $t->{RESPONSE} = [ { 'HTTP-Protocol' => 'HTTP/1.0', 'HTTP-Status' => 200, 'HTTP-Content' => '/get-server-env.php' } ];
        !            86:        ok($tf->handle_http($t) == 0, '$_SERVER["SCRIPT_NAME"]');
        !            87: 
        !            88:        $t->{REQUEST}  = ( <<EOF
        !            89: GET /get-server-env.php/foo?env=PATH_INFO HTTP/1.0
        !            90: Host: www.example.org
        !            91: EOF
        !            92:  );
        !            93:        $t->{RESPONSE}  = [ { 'HTTP-Protocol' => 'HTTP/1.0', 'HTTP-Status' => 200, 'HTTP-Content' => '/foo' } ];
        !            94:        ok($tf->handle_http($t) == 0, '$_SERVER["PATH_INFO"]');
        !            95: 
        !            96:        $t->{REQUEST}  = ( <<EOF
        !            97: GET /get-server-env.php?env=SERVER_NAME HTTP/1.0
        !            98: Host: www.example.org
        !            99: EOF
        !           100:  );
        !           101:        $t->{RESPONSE} = [ { 'HTTP-Protocol' => 'HTTP/1.0', 'HTTP-Status' => 200, 'HTTP-Content' => 'www.example.org' } ];
        !           102:        ok($tf->handle_http($t) == 0, 'SERVER_NAME');
        !           103: 
        !           104:        $t->{REQUEST}  = ( <<EOF
        !           105: GET /get-server-env.php?env=SERVER_NAME HTTP/1.0
        !           106: Host: foo.example.org
        !           107: EOF
        !           108:  );
        !           109:        $t->{RESPONSE} = [ { 'HTTP-Protocol' => 'HTTP/1.0', 'HTTP-Status' => 200, 'HTTP-Content' => 'www.example.org' } ];
        !           110:        ok($tf->handle_http($t) == 0, 'SERVER_NAME');
        !           111: 
        !           112:        $t->{REQUEST}  = ( <<EOF
        !           113: GET /get-server-env.php?env=SERVER_NAME HTTP/1.0
        !           114: Host: vvv.example.org
        !           115: EOF
        !           116:  );
        !           117:        $t->{RESPONSE} = [ { 'HTTP-Protocol' => 'HTTP/1.0', 'HTTP-Status' => 200, 'HTTP-Content' => 'www.example.org' } ];
        !           118:        ok($tf->handle_http($t) == 0, 'SERVER_NAME');
        !           119: 
        !           120:        $t->{REQUEST}  = ( <<EOF
        !           121: GET /get-server-env.php?env=SERVER_NAME HTTP/1.0
        !           122: Host: zzz.example.org
        !           123: EOF
        !           124:  );
        !           125:        $t->{RESPONSE} = [ { 'HTTP-Protocol' => 'HTTP/1.0', 'HTTP-Status' => 200, 'HTTP-Content' => 'www.example.org' } ];
        !           126:        ok($tf->handle_http($t) == 0, 'SERVER_NAME');
        !           127: 
        !           128:        $t->{REQUEST}  = ( <<EOF
        !           129: GET /cgi.php/abc HTTP/1.0
        !           130: EOF
        !           131:  );
        !           132:        $t->{RESPONSE} = [ { 'HTTP-Protocol' => 'HTTP/1.0', 'HTTP-Status' => 200 } ];
        !           133:        ok($tf->handle_http($t) == 0, 'PATHINFO');
        !           134: 
        !           135:        $t->{REQUEST}  = ( <<EOF
        !           136: GET /cgi.php%20%20%20 HTTP/1.0
        !           137: EOF
        !           138:  );
        !           139:        $t->{RESPONSE} = [ { 'HTTP-Protocol' => 'HTTP/1.0', 'HTTP-Status' => 404 } ];
        !           140:        ok($tf->handle_http($t) == 0, 'No source retrieval');
        !           141: 
        !           142:        $t->{REQUEST}  = ( <<EOF
        !           143: GET /www/abc/def HTTP/1.0
        !           144: EOF
        !           145:  );
        !           146:        $t->{RESPONSE} = [ { 'HTTP-Protocol' => 'HTTP/1.0', 'HTTP-Status' => 404 } ];
        !           147:        ok($tf->handle_http($t) == 0, 'PATHINFO on a directory');
        !           148: 
        !           149:        $t->{REQUEST}  = ( <<EOF
        !           150: GET /indexfile/ HTTP/1.0
        !           151: EOF
        !           152:  );
        !           153:        $t->{RESPONSE} = [ { 'HTTP-Protocol' => 'HTTP/1.0', 'HTTP-Status' => 200, 'HTTP-Content' => '/indexfile/index.php' } ];
        !           154:        ok($tf->handle_http($t) == 0, 'PHP_SELF + Indexfile, Bug #3');
        !           155: 
        !           156:        $t->{REQUEST}  = ( <<EOF
        !           157: GET /prefix.fcgi?var=SCRIPT_NAME HTTP/1.0
        !           158: EOF
        !           159:  );
        !           160:        $t->{RESPONSE} = [ { 'HTTP-Protocol' => 'HTTP/1.0', 'HTTP-Status' => 200, 'HTTP-Content' => '/prefix.fcgi' } ];
        !           161:        ok($tf->handle_http($t) == 0, 'PATH_INFO, check-local off');
        !           162: 
        !           163:        $t->{REQUEST}  = ( <<EOF
        !           164: GET /prefix.fcgi/foo/bar?var=SCRIPT_NAME HTTP/1.0
        !           165: EOF
        !           166:  );
        !           167:        $t->{RESPONSE} = [ { 'HTTP-Protocol' => 'HTTP/1.0', 'HTTP-Status' => 200, 'HTTP-Content' => '/prefix.fcgi' } ];
        !           168:        ok($tf->handle_http($t) == 0, 'PATH_INFO, check-local off');
        !           169: 
        !           170:        $t->{REQUEST}  = ( <<EOF
        !           171: GET /prefix.fcgi/foo/bar?var=PATH_INFO HTTP/1.0
        !           172: EOF
        !           173:  );
        !           174:        $t->{RESPONSE} = [ { 'HTTP-Protocol' => 'HTTP/1.0', 'HTTP-Status' => 200, 'HTTP-Content' => '/foo/bar' } ];
        !           175:        ok($tf->handle_http($t) == 0, 'PATH_INFO, check-local off');
        !           176: 
        !           177:        $t->{REQUEST}  = ( <<EOF
        !           178: GET /sendfile.php?range=0- HTTP/1.0
        !           179: EOF
        !           180:  );
        !           181:        $t->{RESPONSE} = [ { 'HTTP-Protocol' => 'HTTP/1.0', 'HTTP-Status' => 200, 'Content-Length' => 4348 } ];
        !           182:        ok($tf->handle_http($t) == 0, 'X-Sendfile2');
        !           183: 
        !           184:        $t->{REQUEST}  = ( <<EOF
        !           185: GET /sendfile.php?range=0-4&range2=5- HTTP/1.0
        !           186: EOF
        !           187:  );
        !           188:        $t->{RESPONSE} = [ { 'HTTP-Protocol' => 'HTTP/1.0', 'HTTP-Status' => 200, 'Content-Length' => 4348 } ];
        !           189:        ok($tf->handle_http($t) == 0, 'X-Sendfile2');
        !           190: 
        !           191:        $t->{REQUEST}  = ( <<EOF
        !           192: GET /get-server-env.php?env=REMOTE_USER HTTP/1.0
        !           193: Host: auth.example.org
        !           194: Authorization: Basic ZGVzOmRlcw==
        !           195: EOF
        !           196:  );
        !           197:        $t->{RESPONSE} = [ { 'HTTP-Protocol' => 'HTTP/1.0', 'HTTP-Status' => 200, 'HTTP-Content' => 'des' } ];
        !           198:        ok($tf->handle_http($t) == 0, '$_SERVER["REMOTE_USER"]');
        !           199: 
        !           200:        $t->{REQUEST}  = ( <<EOF
        !           201: GET /get-server-env.php?env=AUTH_TYPE HTTP/1.0
        !           202: Host: auth.example.org
        !           203: Authorization: Basic ZGVzOmRlcw==
        !           204: EOF
        !           205:  );
        !           206:        $t->{RESPONSE} = [ { 'HTTP-Protocol' => 'HTTP/1.0', 'HTTP-Status' => 200, 'HTTP-Content' => 'Basic' } ];
        !           207:        ok($tf->handle_http($t) == 0, '$_SERVER["AUTH_TYPE"]');
        !           208: 
        !           209: 
        !           210:        ok($tf->stop_proc == 0, "Stopping lighttpd");
        !           211: 
        !           212: 
        !           213:        $tf->{CONFIGFILE} = 'fastcgi-10.conf';
        !           214:        ok($tf->start_proc == 0, "Starting lighttpd with $tf->{CONFIGFILE}") or goto cleanup;
        !           215:        $t->{REQUEST}  = ( <<EOF
        !           216: GET /get-server-env.php?env=SERVER_NAME HTTP/1.0
        !           217: Host: zzz.example.org
        !           218: EOF
        !           219:  );
        !           220:        $t->{RESPONSE} = [ { 'HTTP-Protocol' => 'HTTP/1.0', 'HTTP-Status' => 200, 'HTTP-Content' => 'zzz.example.org' } ];
        !           221:        ok($tf->handle_http($t) == 0, 'FastCGI + Host');
        !           222: 
        !           223:        $t->{REQUEST}  = ( <<EOF
        !           224: GET http://zzz.example.org/get-server-env.php?env=SERVER_NAME HTTP/1.0
        !           225: Host: aaa.example.org
        !           226: EOF
        !           227:  );
        !           228:        $t->{RESPONSE} = [ { 'HTTP-Protocol' => 'HTTP/1.0', 'HTTP-Status' => 200, 'HTTP-Content' => 'zzz.example.org' } ];
        !           229:        ok($tf->handle_http($t) == 0, 'SERVER_NAME (absolute url in request line)');
        !           230: 
        !           231:        ok($tf->stop_proc == 0, "Stopping lighttpd");
        !           232:        
        !           233:        $tf->{CONFIGFILE} = 'bug-06.conf';
        !           234:        ok($tf->start_proc == 0, "Starting lighttpd with $tf->{CONFIGFILE}") or goto cleanup;
        !           235:        $t->{REQUEST}  = ( <<EOF
        !           236: GET /indexfile/ HTTP/1.0
        !           237: Host: www.example.org
        !           238: EOF
        !           239:  );
        !           240:        $t->{RESPONSE} = [ { 'HTTP-Protocol' => 'HTTP/1.0', 'HTTP-Status' => 200, 'HTTP-Content' => '/indexfile/index.php' } ];
        !           241:        ok($tf->handle_http($t) == 0, 'Bug #6');
        !           242: 
        !           243:        ok($tf->stop_proc == 0, "Stopping lighttpd");
        !           244: 
        !           245:        $tf->{CONFIGFILE} = 'bug-12.conf';
        !           246:        ok($tf->start_proc == 0, "Starting lighttpd with bug-12.conf") or goto cleanup;
        !           247:        $t->{REQUEST}  = ( <<EOF
        !           248: POST /indexfile/abc HTTP/1.0
        !           249: Host: www.example.org
        !           250: Content-Length: 0
        !           251: EOF
        !           252:  );
        !           253:        $t->{RESPONSE} = [ { 'HTTP-Protocol' => 'HTTP/1.0', 'HTTP-Status' => 404, 'HTTP-Content' => '/indexfile/return-404.php' } ];
        !           254:        ok($tf->handle_http($t) == 0, 'Bug #12');
        !           255: 
        !           256:        ok($tf->stop_proc == 0, "Stopping lighttpd");
        !           257: }
        !           258: 
        !           259: SKIP: {
        !           260:        skip "PHP not started, cannot stop it", 1 unless $php_child != -1;
        !           261:        ok(0 == $tf->endspawnfcgi($php_child), "Stopping php");
        !           262:        $php_child = -1;
        !           263: }
        !           264: 
        !           265: SKIP: {
        !           266:        skip "no fcgi-auth found", 5 unless -x $tf->{BASEDIR}."/tests/fcgi-auth" || -x $tf->{BASEDIR}."/tests/fcgi-auth.exe"; 
        !           267: 
        !           268:        $tf->{CONFIGFILE} = 'fastcgi-auth.conf';
        !           269:        ok($tf->start_proc == 0, "Starting lighttpd with $tf->{CONFIGFILE}") or die();
        !           270:        $t->{REQUEST}  = ( <<EOF
        !           271: GET /index.html?ok HTTP/1.0
        !           272: Host: www.example.org
        !           273: EOF
        !           274:  );
        !           275:        $t->{RESPONSE} = [ { 'HTTP-Protocol' => 'HTTP/1.0', 'HTTP-Status' => 200 } ];
        !           276:        ok($tf->handle_http($t) == 0, 'FastCGI - Auth');
        !           277: 
        !           278:        $t->{REQUEST}  = ( <<EOF
        !           279: GET /index.html?fail HTTP/1.0
        !           280: Host: www.example.org
        !           281: EOF
        !           282:  );
        !           283:        $t->{RESPONSE} = [ { 'HTTP-Protocol' => 'HTTP/1.0', 'HTTP-Status' => 403 } ];
        !           284:        ok($tf->handle_http($t) == 0, 'FastCGI - Auth');
        !           285: 
        !           286:        $t->{REQUEST}  = ( <<EOF
        !           287: GET /expire/access.txt?ok HTTP/1.0
        !           288: Host: www.example.org
        !           289: EOF
        !           290:  );
        !           291:        $t->{RESPONSE} = [ { 'HTTP-Protocol' => 'HTTP/1.0', 'HTTP-Status' => 200 } ];
        !           292:        ok($tf->handle_http($t) == 0, 'FastCGI - Auth in subdirectory');
        !           293: 
        !           294:        ok($tf->stop_proc == 0, "Stopping lighttpd");
        !           295: }
        !           296: 
        !           297: SKIP: {
        !           298:        skip "no php found", 5 unless -x $phpbin;
        !           299:        $tf->{CONFIGFILE} = 'fastcgi-13.conf';
        !           300:        ok($tf->start_proc == 0, "Starting lighttpd with $tf->{CONFIGFILE}") or die();
        !           301:        $t->{REQUEST}  = ( <<EOF
        !           302: GET /indexfile/index.php HTTP/1.0
        !           303: Host: www.example.org
        !           304: EOF
        !           305:  );
        !           306:        $t->{RESPONSE} = [ { 'HTTP-Protocol' => 'HTTP/1.0', 'HTTP-Status' => 200 } ];
        !           307:        ok($tf->handle_http($t) == 0, 'FastCGI + local spawning');
        !           308: 
        !           309:        $t->{REQUEST} = ( <<EOF
        !           310: HEAD /indexfile/index.php HTTP/1.0
        !           311: Host: www.example.org
        !           312: EOF
        !           313:  );
        !           314:        $t->{RESPONSE} = [ { 'HTTP-Protocol' => 'HTTP/1.0', 'HTTP-Status' => 200, '-Content-Length' => '0' } ];
        !           315:        # Of course a valid content-length != 0 would be ok, but we assume for now that such one is not generated.
        !           316:        ok($tf->handle_http($t) == 0, 'Check for buggy content length with HEAD');
        !           317: 
        !           318:        $t->{REQUEST}  = ( <<EOF
        !           319: GET /get-env.php?env=MAIL HTTP/1.0
        !           320: Host: www.example.org
        !           321: EOF
        !           322:  );
        !           323:        $t->{RESPONSE} = [ { 'HTTP-Protocol' => 'HTTP/1.0', 'HTTP-Status' => 200 , 'HTTP-Content' => '' } ];
        !           324:        ok($tf->handle_http($t) == 0, 'FastCGI + bin-copy-environment');
        !           325: 
        !           326: 
        !           327: 
        !           328:        ok($tf->stop_proc == 0, "Stopping lighttpd");
        !           329: }
        !           330: 
        !           331: 
        !           332: SKIP: {
        !           333:        skip "no fcgi-responder found", 11 unless -x $tf->{BASEDIR}."/tests/fcgi-responder" || -x $tf->{BASEDIR}."/tests/fcgi-responder.exe";
        !           334:        
        !           335:        $tf->{CONFIGFILE} = 'fastcgi-responder.conf';
        !           336:        ok($tf->start_proc == 0, "Starting lighttpd with $tf->{CONFIGFILE}") or die();
        !           337:        $t->{REQUEST}  = ( <<EOF
        !           338: GET /index.fcgi?lf HTTP/1.0
        !           339: Host: www.example.org
        !           340: EOF
        !           341:  );
        !           342:        $t->{RESPONSE} = [ { 'HTTP-Protocol' => 'HTTP/1.0', 'HTTP-Status' => 200, 'HTTP-Content' => 'test123' } ];
        !           343:        ok($tf->handle_http($t) == 0, 'line-ending \n\n');
        !           344: 
        !           345:        $t->{REQUEST}  = ( <<EOF
        !           346: GET /index.fcgi?crlf HTTP/1.0
        !           347: Host: www.example.org
        !           348: EOF
        !           349:  );
        !           350:        $t->{RESPONSE} = [ { 'HTTP-Protocol' => 'HTTP/1.0', 'HTTP-Status' => 200, 'HTTP-Content' => 'test123' } ];
        !           351:        ok($tf->handle_http($t) == 0, 'line-ending \r\n\r\n');
        !           352: 
        !           353:        $t->{REQUEST}  = ( <<EOF
        !           354: GET /index.fcgi?slow-lf HTTP/1.0
        !           355: Host: www.example.org
        !           356: EOF
        !           357:  );
        !           358:        $t->{RESPONSE} = [ { 'HTTP-Protocol' => 'HTTP/1.0', 'HTTP-Status' => 200, 'HTTP-Content' => 'test123' } ];
        !           359:        ok($tf->handle_http($t) == 0, 'line-ending \n + \n');
        !           360: 
        !           361:        $t->{REQUEST}  = ( <<EOF
        !           362: GET /index.fcgi?slow-crlf HTTP/1.0
        !           363: Host: www.example.org
        !           364: EOF
        !           365:  );
        !           366:        $t->{RESPONSE} = [ { 'HTTP-Protocol' => 'HTTP/1.0', 'HTTP-Status' => 200, 'HTTP-Content' => 'test123' } ];
        !           367:        ok($tf->handle_http($t) == 0, 'line-ending \r\n + \r\n');
        !           368: 
        !           369:        $t->{REQUEST}  = ( <<EOF
        !           370: GET /abc/def/ghi?path_info HTTP/1.0
        !           371: Host: wsgi.example.org
        !           372: EOF
        !           373:  );
        !           374:        $t->{RESPONSE} = [ { 'HTTP-Protocol' => 'HTTP/1.0', 'HTTP-Status' => 200, 'HTTP-Content' => '/abc/def/ghi' } ];
        !           375:        ok($tf->handle_http($t) == 0, 'PATH_INFO (wsgi)');
        !           376: 
        !           377:        $t->{REQUEST}  = ( <<EOF
        !           378: GET /abc/def/ghi?script_name HTTP/1.0
        !           379: Host: wsgi.example.org
        !           380: EOF
        !           381:  );
        !           382:        $t->{RESPONSE} = [ { 'HTTP-Protocol' => 'HTTP/1.0', 'HTTP-Status' => 200, 'HTTP-Content' => '' } ];
        !           383:        ok($tf->handle_http($t) == 0, 'SCRIPT_NAME (wsgi)');
        !           384: 
        !           385: 
        !           386:        $t->{REQUEST}  = ( <<EOF
        !           387: GET /index.fcgi?die-at-end HTTP/1.0
        !           388: Host: www.example.org
        !           389: EOF
        !           390:  );
        !           391:        $t->{RESPONSE} = [ { 'HTTP-Protocol' => 'HTTP/1.0', 'HTTP-Status' => 200, 'HTTP-Content' => 'test123' } ];
        !           392:        ok($tf->handle_http($t) == 0, 'killing fastcgi and wait for restart');
        !           393: 
        !           394:        select(undef, undef, undef, .2);
        !           395:        $t->{REQUEST}  = ( <<EOF
        !           396: GET /index.fcgi?die-at-end HTTP/1.0
        !           397: Host: www.example.org
        !           398: EOF
        !           399:  );
        !           400:        $t->{RESPONSE} = [ { 'HTTP-Protocol' => 'HTTP/1.0', 'HTTP-Status' => 200, 'HTTP-Content' => 'test123' } ];
        !           401:        ok($tf->handle_http($t) == 0, 'killing fastcgi and wait for restart');
        !           402: 
        !           403: 
        !           404:        select(undef, undef, undef, .2);
        !           405:        $t->{REQUEST}  = ( <<EOF
        !           406: GET /index.fcgi?crlf HTTP/1.0
        !           407: Host: www.example.org
        !           408: EOF
        !           409:  );
        !           410:        $t->{RESPONSE} = [ { 'HTTP-Protocol' => 'HTTP/1.0', 'HTTP-Status' => 200, 'HTTP-Content' => 'test123' } ];
        !           411:        ok($tf->handle_http($t) == 0, 'regular response of after restart');
        !           412: 
        !           413: 
        !           414:        ok($tf->stop_proc == 0, "Stopping lighttpd");
        !           415: }
        !           416: 
        !           417: exit 0;
        !           418: 
        !           419: cleanup: ;
        !           420: 
        !           421: $tf->endspawnfcgi($php_child) if $php_child != -1;
        !           422: 
        !           423: die();

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>