dougm       00/09/29 09:33:41

  Modified:    .        Changes
               src/modules/perl mod_perl.c perl_util.c
  Log:
  fix Apache::exit() so it does it does not trigger a warning
  
  Revision  Changes    Path
  1.540     +1 -1      modperl/Changes
  
  Index: Changes
  ===================================================================
  RCS file: /home/cvs/modperl/Changes,v
  retrieving revision 1.539
  retrieving revision 1.540
  diff -u -r1.539 -r1.540
  --- Changes   2000/09/28 21:16:07     1.539
  +++ Changes   2000/09/29 16:33:38     1.540
  @@ -13,7 +13,7 @@
   Apache::test enhancements
   [Ken Williams <[EMAIL PROTECTED]>]
   
  -fix Apache::exit() so it does it does not trigger a warning (maybe)
  +fix Apache::exit() so it does it does not trigger a warning
   
   change Apache::PerlRun's Apache class relationship from is-a to has-a
   [Ken Williams <[EMAIL PROTECTED]>]
  
  
  
  1.130     +10 -7     modperl/src/modules/perl/mod_perl.c
  
  Index: mod_perl.c
  ===================================================================
  RCS file: /home/cvs/modperl/src/modules/perl/mod_perl.c,v
  retrieving revision 1.129
  retrieving revision 1.130
  diff -u -r1.129 -r1.130
  --- mod_perl.c        2000/09/27 16:13:28     1.129
  +++ mod_perl.c        2000/09/29 16:33:40     1.130
  @@ -1654,14 +1654,17 @@
       
       SPAGAIN;
   
  -    if(perl_eval_ok(r->server) != OK) {
  -     dTHRCTX;
  -     MP_STORE_ERROR(r->uri, ERRSV);
  -        if (r->notes) {
  -            ap_table_set(r->notes, "error-notes", SvPVX(ERRSV));
  +    if ((status = perl_eval_ok(r->server)) != OK) {
  +        dTHRCTX;
  +        if (status == SERVER_ERROR) {
  +            MP_STORE_ERROR(r->uri, ERRSV);
  +            if (r->notes) {
  +                ap_table_set(r->notes, "error-notes", SvPVX(ERRSV));
  +            }
           }
  -     if(!perl_sv_is_http_code(ERRSV, &status))
  -         status = SERVER_ERROR;
  +        else if (status == DECLINED) {
  +            status = r->status == 200 ? OK : r->status;
  +        }
       }
       else if(count != 1) {
        mod_perl_error(r->server,
  
  
  
  1.43      +15 -5     modperl/src/modules/perl/perl_util.c
  
  Index: perl_util.c
  ===================================================================
  RCS file: /home/cvs/modperl/src/modules/perl/perl_util.c,v
  retrieving revision 1.42
  retrieving revision 1.43
  diff -u -r1.42 -r1.43
  --- perl_util.c       2000/09/28 21:00:47     1.42
  +++ perl_util.c       2000/09/29 16:33:40     1.43
  @@ -677,17 +677,27 @@
   
   int perl_eval_ok(server_rec *s)
   {
  +    int status;
       SV *sv;
       dTHR;
       dTHRCTX;
   
       sv = ERRSV;
  -    if(SvTRUE(sv)) {
  -     MP_TRACE_g(fprintf(stderr, "perl_eval error: %s\n", SvPV(sv,na)));
  -     mod_perl_error(s, SvPV(sv, na));
  -     return -1;
  +    if (SvTRUE(sv)) {
  +        if (SvMAGICAL(sv) && (SvCUR(sv) > 4) &&
  +            strnEQ(SvPVX(sv), " at ", 4))
  +        {
  +            /* Apache::exit was called */
  +            return DECLINED;
  +        }
  +        if (perl_sv_is_http_code(ERRSV, &status)) {
  +            return status;
  +        }
  +        MP_TRACE_g(fprintf(stderr, "perl_eval error: %s\n", SvPV(sv,na)));
  +        mod_perl_error(s, SvPV(sv, na));
  +        return SERVER_ERROR;
       }
  -    return 0;
  +    return OK;
   }
   
   int perl_sv_is_http_code(SV *errsv, int *status) 
  
  
  

Reply via email to