On Wed, 2004-01-21 at 23:33, Stas Bekman wrote:
> Philippe,
> 
> Adding this to httpd.conf:
> 
>    PerlModule Does::not::ExiST
> 
> aborts the startup and prints the error message.
> 
> The following section should be an equivalent one and behave the same:
> 
>   <Perl>
>      use Apache::ServerUtil;
>      my $s = Apache->server->add_config(['PerlModule Does::not::ExiST']);
>   </Perl>
> 
> but it doesn't fail. By tracing through I can see that we simply return the 
> error message through add_config and expect the user to test for the error 
> message? Most people won't think of doing that and will scratch their heads in 
> mystery why things seem to be wrong, while the server has started. Besides it 
> makes the above two snippets which do the same thing behave differently.

yes, and is definitely _not_ intuitive.

> I suggest to change add_config methods to return void, and croak on error. 
> Following is a partial patch w/o adjusting the return values to void.

Yes, and if people want to ->add_config and know if it fails can just
use an eval block.

> Of course we still have the perlsections bug where a failing perlsection 
> doesn't prevent from the server to happily continue its starting, so that 
> croak below won't kill the server. it'd be very handy to get it fixed, hint, 
> hint ;)

That is not a bug, it's a feature, or a documentation bug.

That's what $Apache::Server::StrictPerlSections is for

Notice that by default, perl sections _will_ print a warning (so with
your croak patch):

[warn] Syntax error at t/conf/extra.last.conf:74 Can't locate
Does/not/ExiST.pm in @INC (@INC contains:[...]) at (eval 81) line 3.

And if you set StrictPerlSections, you'll get a fatal error and the
server startup will abort.

AFAIK, the fact that a syntax error in a <Perl> sections in mp1 aborts
server startup is a bug ...

I would possibly suggest making Apache::Server::StrictPerlSections = 1
by default, maybe.

But as far as having add_config croak on error, I think it's a good idea
+1

> Index: src/modules/perl/modperl_config.c
> ===================================================================
> RCS file: /home/cvs/modperl-2.0/src/modules/perl/modperl_config.c,v
> retrieving revision 1.74
> diff -u -r1.74 modperl_config.c
> --- src/modules/perl/modperl_config.c   10 Jan 2004 02:52:20 -0000      1.74
> +++ src/modules/perl/modperl_config.c   22 Jan 2004 07:28:19 -0000
> @@ -452,6 +452,10 @@
>           apr_pool_destroy(parms.temp_pool);
>       }
> 
> +    if (errmsg) {
> +        Perl_croak(aTHX_ "%s", errmsg);
> +    }
> +
>       return errmsg;
>   }
> 
> 
> __________________________________________________________________
> 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
-- 
--------------------------------------------------------------------------------
Philippe M. Chiasson /gozer\@(cpan|ectoplasm)\.org/ 88C3A5A5 (122FF51B/C634E37B)
http://gozer.ectoplasm.org/    F9BF E0C2 480E 7680 1AE5 3631 CB32 A107 88C3 A5A5
Q: It is impossible to make anything foolproof because fools are so ingenious.
perl -e'$$=\${gozer};{$_=unpack(P7,pack(L,$$));/^JAm_pH\n$/&&print||$$++&&redo}'

Attachment: signature.asc
Description: This is a digitally signed message part

Reply via email to