geoff 2003/10/20 12:37:29
Modified: src/modules/perl modperl_callback.c t/modperl status.t t/response/TestModperl current_callback.pm Log: return value from Perl callbacks are now passed directly to Apache without additional post-call manipulations (such as assuming HTTP_OK should really be OK). Reviewed by: stas Revision Changes Path 1.64 +0 -6 modperl-2.0/src/modules/perl/modperl_callback.c Index: modperl_callback.c =================================================================== RCS file: /home/cvs/modperl-2.0/src/modules/perl/modperl_callback.c,v retrieving revision 1.63 retrieving revision 1.64 diff -u -r1.63 -r1.64 --- modperl_callback.c 11 Oct 2003 08:01:00 -0000 1.63 +++ modperl_callback.c 20 Oct 2003 19:37:29 -0000 1.64 @@ -100,12 +100,6 @@ "handler %s didn't return a valid return value!", handler->name); } - - /* assume OK for non-HTTP status codes and for 200 (HTTP_OK) */ - if (((status > 0) && (status < 100)) || - (status == 200) || (status > 600)) { - status = OK; - } } PUTBACK; 1.3 +20 -13 modperl-2.0/t/modperl/status.t Index: status.t =================================================================== RCS file: /home/cvs/modperl-2.0/t/modperl/status.t,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- status.t 15 Oct 2003 12:38:36 -0000 1.2 +++ status.t 20 Oct 2003 19:37:29 -0000 1.3 @@ -10,7 +10,7 @@ NOT_FOUND SERVER_ERROR FORBIDDEN HTTP_OK); -plan tests => 14; +plan tests => 15; my $base = "/TestModperl__status"; @@ -62,21 +62,22 @@ $uri); } -# the return code guessing game +# apache translates non-HTTP codes into 500 +# see ap_index_of_response { - my $uri = join '?', $base, Apache::HTTP_OK; + my $uri = join '?', $base, 601; my $code = GET_RC $uri; - ok t_cmp(Apache::HTTP_OK, + ok t_cmp(Apache::SERVER_ERROR, $code, $uri); } { - my $uri = join '?', $base, 601; + my $uri = join '?', $base, 313; my $code = GET_RC $uri; - ok t_cmp(Apache::HTTP_OK, + ok t_cmp(Apache::SERVER_ERROR, $code, $uri); } @@ -85,19 +86,25 @@ my $uri = join '?', $base, 1; my $code = GET_RC $uri; - ok t_cmp(Apache::HTTP_OK, + ok t_cmp(Apache::SERVER_ERROR, $code, $uri); } -# apache translates non-HTTP codes into 500 -# see ap_index_of_response +# HTTP_OK is treated as an error, since it's not +# OK, DECLINED, or DONE. while apache's lookups +# succeed so the 200 is propagated to the client, +# there's an error beneath that 200 code. { - my $uri = join '?', $base, 313; - my $code = GET_RC $uri; + my $uri = join '?', $base, Apache::HTTP_OK; + my $response = GET $uri; - ok t_cmp(Apache::SERVER_ERROR, - $code, + ok t_cmp(Apache::HTTP_OK, + $response->code, + $uri); + + ok t_cmp(qr/server encountered an internal error/, + $response->content, $uri); } 1.4 +1 -0 modperl-2.0/t/response/TestModperl/current_callback.pm Index: current_callback.pm =================================================================== RCS file: /home/cvs/modperl-2.0/t/response/TestModperl/current_callback.pm,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- current_callback.pm 31 Mar 2003 01:50:52 -0000 1.3 +++ current_callback.pm 20 Oct 2003 19:37:29 -0000 1.4 @@ -36,6 +36,7 @@ die "expecting $expected callback, instead got $callback" unless $callback eq $expected; #warn "in callback: $callback\n"; + return Apache::OK; } 1;