dougm 01/04/24 20:13:59 Modified: src/modules/perl modperl_mgv.c modperl_util.c modperl_util.h Log: be less noisy about failed requires if our last guess succeeds Revision Changes Path 1.14 +14 -3 modperl-2.0/src/modules/perl/modperl_mgv.c Index: modperl_mgv.c =================================================================== RCS file: /home/cvs/modperl-2.0/src/modules/perl/modperl_mgv.c,v retrieving revision 1.13 retrieving revision 1.14 diff -u -r1.13 -r1.14 --- modperl_mgv.c 2001/04/19 21:26:35 1.13 +++ modperl_mgv.c 2001/04/25 03:13:58 1.14 @@ -291,7 +291,7 @@ MP_TRACE_h(MP_FUNC, "package %s not defined, attempting to load\n", name); - if (modperl_require_module(aTHX_ name)) { + if (modperl_require_module(aTHX_ name, FALSE)) { MP_TRACE_h(MP_FUNC, "loaded %s package\n", name); if (!(stash = gv_stashpv(name, FALSE))) { MP_TRACE_h(MP_FUNC, "%s package still does not exist\n", @@ -300,6 +300,8 @@ } } else { + I32 errlen = 0; + char *errpv; int ix = ap_rind(name, ':'); stash = Nullhv; @@ -311,13 +313,22 @@ char *try_package = apr_pstrndup(p, name, ix-1); handler_name = apr_pstrdup(p, name + ix + 1); - if (modperl_require_module(aTHX_ try_package)) { + /* if this fails we want to log $@ from failure above */ + errlen = SvCUR(ERRSV); + errpv = apr_pstrndup(p, SvPVX(ERRSV), errlen); + + if (modperl_require_module(aTHX_ try_package, FALSE)) { MP_TRACE_h(MP_FUNC, "loaded %s package\n", try_package); stash = gv_stashpv(try_package, FALSE); } } if (!stash) { + if (errlen) { + sv_setpvn(ERRSV, errpv, errlen); + } + (void)modperl_errsv(aTHX_ HTTP_INTERNAL_SERVER_ERROR, + NULL, NULL); MP_TRACE_h(MP_FUNC, "failed to load %s package\n", name); return 0; } @@ -385,7 +396,7 @@ char *package = modperl_mgv_as_string(aTHX_ symbol, p, 1); - if (modperl_require_module(aTHX_ package)) { + if (modperl_require_module(aTHX_ package, TRUE)) { MP_TRACE_h(MP_FUNC, "reloaded %s for server %s\n", package, modperl_server_desc(s, p)); return TRUE; 1.8 +5 -2 modperl-2.0/src/modules/perl/modperl_util.c Index: modperl_util.c =================================================================== RCS file: /home/cvs/modperl-2.0/src/modules/perl/modperl_util.c,v retrieving revision 1.7 retrieving revision 1.8 diff -u -r1.7 -r1.8 --- modperl_util.c 2001/04/20 01:57:25 1.7 +++ modperl_util.c 2001/04/25 03:13:59 1.8 @@ -1,6 +1,6 @@ #include "mod_perl.h" -int modperl_require_module(pTHX_ const char *pv) +int modperl_require_module(pTHX_ const char *pv, int logfailure) { SV *sv; @@ -15,7 +15,10 @@ POPSTACK; if (SvTRUE(ERRSV)) { - (void)modperl_errsv(aTHX_ HTTP_INTERNAL_SERVER_ERROR, NULL, NULL); + if (logfailure) { + (void)modperl_errsv(aTHX_ HTTP_INTERNAL_SERVER_ERROR, + NULL, NULL); + } return FALSE; } 1.9 +1 -1 modperl-2.0/src/modules/perl/modperl_util.h Index: modperl_util.h =================================================================== RCS file: /home/cvs/modperl-2.0/src/modules/perl/modperl_util.h,v retrieving revision 1.8 retrieving revision 1.9 diff -u -r1.8 -r1.9 --- modperl_util.h 2001/04/20 01:57:25 1.8 +++ modperl_util.h 2001/04/25 03:13:59 1.9 @@ -27,7 +27,7 @@ int modperl_errsv(pTHX_ int status, request_rec *r, server_rec *s); -int modperl_require_module(pTHX_ const char *pv); +int modperl_require_module(pTHX_ const char *pv, int logfailure); char *modperl_server_desc(server_rec *s, apr_pool_t *p);