It's not quite there yet, but enough is there for testing. If you get a chance to look at it, I'd really like hear how it goes, problems, feedback, etc. This is the work that Gisle Aas started a little while back, which I have picked up recently. There's half-decent documentation that explains more. You can grab it at: http://www.osf.org/~dougm/perl/mod_perl.tar.gz While I'm here, and you're there, if anyone would like to check out mod_auth_dbi (authenticate via Perl's DBI module) http://www.osf.org/~dougm/perl/mod_auth_dbi.tar.gz Here are some issues I've scribbled down: o *** We're leaking!! *** Andrew McRae pointed this out to me, I've attached his sample leaker below, watch it grow! I tried to set perl_destruct_level, to make extra sure everything is cleaned-up, this dumped core on me. Anyone know what's happening here? Andrew or myself will run this by the perl5porters. I hope this is simple fix, or that I'm just imagining things... o the client is not hooked up to the script's STDIN/STDOUT I had this working against 1.0.5 sources, but then the io scheme changed in 1.1bx. I'll get back to this. o Makefile.tmpl needs cleaning o Currently, we keep the 'Authorization' header from the script. opinions? o Should we have an Apache.pm file? Currently mod_perl does the 'bootstrap Apache'. o Some methods such as $r->set_content_type could stand to loose the set_ prefix provided then return a value. $ct = $r->content_type; #get it $r->content_type("text/html"); #set it opinions? o Add other methods would be handy to have. o Other stuff I'm not thinking of... Cheers, -Doug ---8<---- leak.c #include #include #include PerlInterpreter *my_perl; char *my_argv[] = { "", "-e", "sub leaker { my(@a) = 1..10_000 }" }; void leak(void) { my_perl = perl_alloc(); perl_construct( my_perl ); perl_parse(my_perl, NULL, 3, my_argv, NULL); perl_call_pv("leaker", G_DISCARD|G_NOARGS); /* perl_destruct_level = 2; */ perl_destruct(my_perl); perl_free(my_perl); } int main(int argc, char** argv, char **envp) { int count; for (count = 1; count <= 10; count++) { printf("Step %d...\n", count); leak(); printf(" done\n"); sleep(5); } }