Stas Bekman wrote:
[...]
the reason I suggested a subclass was so that the rare people who
require nph scripts have an outlet, while the vast majority of users are not
burdened with the overhead of checking for nph- scripts on every request.



A quick index() call to check for "nph-" is not going to matter in any real world scenario.


OK, so it seems that we agree on having the support only for /^nph-/ in registry. Now we just need to decide whether we
1) support this by default for any registry class, unless explicitly overriden in the subclass,
2) or introduce a new subclass just for that purpose.


The problem with (2) is that if you need mix and match nph- and not nph- scripts living in the same dir you will need to duplicate configs.

I'm fine going with (1) since we can always do (2) at a later stage.

so here is the implementation of (1) plus tests.


Index: ModPerl-Registry/lib/ModPerl/RegistryCooker.pm
===================================================================
RCS file: /home/cvs/modperl-2.0/ModPerl-Registry/lib/ModPerl/RegistryCooker.pm,v
retrieving revision 1.40
diff -u -u -r1.40 RegistryCooker.pm
--- ModPerl-Registry/lib/ModPerl/RegistryCooker.pm      19 Dec 2003 06:32:28 -0000     
 1.40
+++ ModPerl-Registry/lib/ModPerl/RegistryCooker.pm      21 Jan 2004 06:38:21 -0000
@@ -25,6 +25,7 @@
 use ModPerl::Global ();

 use File::Spec::Functions ();
+use File::Basename;

use Apache::Const -compile => qw(:common &OPT_EXECCGI);

@@ -360,6 +361,11 @@

$self->strip_end_data_segment;

+    # handle the non-parsed handlers ala mod_cgi (though mod_cgi does
+    # some tricks removing the header_out and other filters, here we
+    # just call assbackwards which has the same effect).
+    my $base = File::Basename::basename($self->{FILENAME});
+    my $nph = substr($base, 0, 4) eq 'nph-' ? '$_[0]->assbackwards(1);' : "";
     my $script_name = $self->get_script_name || $0;

     my $eval = join '',
@@ -367,6 +373,7 @@
                     $self->{PACKAGE}, ";",
                     "sub handler {",
                     "local \$0 = '$script_name';",
+                    $nph,
                     $line,
                     ${ $self->{CODE} },
                     "\n}"; # last line comment without newline?
--- /dev/null   1969-12-31 16:00:00.000000000 -0800
+++ ModPerl-Registry/t/nph.t    2004-01-20 22:29:55.000000000 -0800
@@ -0,0 +1,54 @@
+use strict;
+use warnings FATAL => 'all';
+
+use Apache::Test;
+use Apache::TestUtil;
+use Apache::TestRequest;
+
+plan tests => 6;
+
+my $url = "/nph/nph-foo.pl";
+
+my %expected = (
+    code    => '250',
+    body    => "non-parsed headers body",
+    headers => {
+        'content-type' => 'text/text',
+        'pragma' => 'no-cache',
+        'cache-control' => 'must-revalidate, no-cache, no-store',
+        'expires' => '-1',
+    },
+);
+
+my $res = GET $url;
+
+my %received = (
+    code    => $res->code,
+    body    => $res->content,
+    headers => $res->headers, # LWP lc's the headers
+);
+
+use Data::Dumper;
+print Dumper $res->headers;
+
+for my $key (keys %expected) {
+    my $expected = $expected{$key};
+    my $received = $received{$key};
+    if ($key eq 'headers') {
+        for my $header (keys %$expected) {
+            ok t_cmp(
+                $expected->{$header},
+                $received->{$header},
+                "test header $header"
+            );
+        }
+    }
+    else {
+        ok t_cmp(
+            $expected,
+            $received,
+            "test key: $key"
+        );
+    }
+}
+

--- /dev/null   1969-12-31 16:00:00.000000000 -0800
+++ ModPerl-Registry/t/cgi-bin/nph-foo.pl       2004-01-20 22:36:55.000000000 -0800
@@ -0,0 +1,13 @@
+#!/usr/bin/perl -w
+
+my $r = shift;
+
+print "HTTP/1.0 250 Pretty OK\r\n";
+print join("\n",
+     'Content-type: text/text',
+     'Pragma: no-cache',
+     'Cache-control: must-revalidate, no-cache, no-store',
+     'Expires: -1',
+     "\n");
+
+print "non-parsed headers body";


__________________________________________________________________ Stas Bekman JAm_pH ------> Just Another mod_perl Hacker http://stason.org/ mod_perl Guide ---> http://perl.apache.org mailto:[EMAIL PROTECTED] http://use.perl.org http://apacheweek.com http://modperlbook.org http://apache.org http://ticketmaster.com


--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]



Reply via email to