martin      99/02/16 06:29:53

  Modified:    .        STATUS
               src      CHANGES
               src/main http_protocol.c
               src/modules/proxy proxy_util.c
  Log:
  Allow apache acting as a proxy server to relay the real reason of a
  failure to a client rather than the "internal server error" it does
  currently. The general exposure mechanism can be triggered by any
  module by setting the "verbose-error-to" note to "*"; this allows
  more than just proxy errors to be exposed.
  
  PR: 3455
  Submitted by: Cliff Skolnick <[EMAIL PROTECTED]>
  Reviewed by: Roy Fielding, Dirk-Willem van Gulik, Martin Kraemer
  
  Revision  Changes    Path
  1.626     +1 -6      apache-1.3/STATUS
  
  Index: STATUS
  ===================================================================
  RCS file: /export/home/cvs/apache-1.3/STATUS,v
  retrieving revision 1.625
  retrieving revision 1.626
  diff -u -r1.625 -r1.626
  --- STATUS    1999/02/16 13:44:40     1.625
  +++ STATUS    1999/02/16 14:29:46     1.626
  @@ -1,5 +1,5 @@
     1.3 STATUS:
  -  Last modified at [$Date: 1999/02/16 13:44:40 $]
  +  Last modified at [$Date: 1999/02/16 14:29:46 $]
   
   Release:
   
  @@ -73,11 +73,6 @@
       * John Bley's [PATCH] malloc checks
           MID: <[EMAIL PROTECTED]>
           Status: Jim -0 (maybe the messages could be more detailed?)
  -
  -    * Cliff's [PATCH] 500 errors not giving error-notes (related to PR #3455)
  -        Message-ID: <[EMAIL PROTECTED]>
  -        Status: Roy -1 [only because the strncmp may do a NULL compare,
  -                        easy to fix and then I'd +1]
   
       * Ralf's [PATCH] Shared Memory Pools
           Message-ID: <[EMAIL PROTECTED]>
  
  
  
  1.1249    +8 -1      apache-1.3/src/CHANGES
  
  Index: CHANGES
  ===================================================================
  RCS file: /export/home/cvs/apache-1.3/src/CHANGES,v
  retrieving revision 1.1248
  retrieving revision 1.1249
  diff -u -r1.1248 -r1.1249
  --- CHANGES   1999/02/10 12:27:25     1.1248
  +++ CHANGES   1999/02/16 14:29:48     1.1249
  @@ -1,5 +1,12 @@
   Changes with Apache 1.3.5
   
  +  *) Allow apache acting as a proxy server to relay the real
  +     reason of a failure to a client rather than the "internal
  +     server error" it does currently. The general exposure mechanism
  +     can be triggered by any module by setting the "verbose-error-to"
  +     note to "*"; this allows more than just proxy errors to be exposed.
  +     [Cliff Skolnick, Roy Fielding, Martin Kraemer] Related to PR#3455
  +
     *) Moved man pages for ab and apachectrl to section 8.
        [Wilfredo Sanchez, Roy Fielding]
   
  @@ -42,7 +49,7 @@
   
     *) proxy: The various calls to ap_proxyerror() can return HTTP/1.1 status
        code different from 500. This allows the proxy to, e.g., return
  -     "403 Forbidden" for ProxyBlock'ed URL's. [Martin Kraemer]
  +     "403 Forbidden" for ProxyBlock'ed URL's. [Martin Kraemer] Related to 
PR#3455
   
     *) Fix ordering of language variants for the case where the traditional
        negotiation algorithm is being used with multiple language variants
  
  
  
  1.258     +14 -1     apache-1.3/src/main/http_protocol.c
  
  Index: http_protocol.c
  ===================================================================
  RCS file: /export/home/cvs/apache-1.3/src/main/http_protocol.c,v
  retrieving revision 1.257
  retrieving revision 1.258
  diff -u -r1.257 -r1.258
  --- http_protocol.c   1999/02/09 16:57:24     1.257
  +++ http_protocol.c   1999/02/16 14:29:51     1.258
  @@ -2520,7 +2520,19 @@
                        "accepted by the server for this resource.\n", fd);
            break;
        default:            /* HTTP_INTERNAL_SERVER_ERROR */
  -         ap_bvputs(fd, "The server encountered an internal error or\n"
  +         /*
  +          * This comparison to expose error-notes could be modified to
  +          * use a configuration directive and export based on that 
  +          * directive.  For now "*" is used to designate an error-notes
  +          * that is totally safe for any user to see (ie lacks paths,
  +          * database passwords, etc.)
  +          */
  +         if (((error_notes = ap_table_get(r->notes, "error-notes")) != NULL)
  +             && (h1 = ap_table_get(r->notes, "verbose-error-to")) != NULL
  +             && (strcmp(h1, "*") == 0)) {
  +             ap_bvputs(fd, error_notes, "<P>\n", NULL);
  +         } else {
  +             ap_bvputs(fd, "The server encountered an internal error or\n"
                     "misconfiguration and was unable to complete\n"
                     "your request.<P>\n"
                     "Please contact the server administrator,\n ",
  @@ -2530,6 +2542,7 @@
                     "caused the error.<P>\n"
                     "More information about this error may be available\n"
                     "in the server error log.<P>\n", NULL);
  +         }
         /*
          * It would be nice to give the user the information they need to
          * fix the problem directly since many users don't have access to
  
  
  
  1.77      +4 -0      apache-1.3/src/modules/proxy/proxy_util.c
  
  Index: proxy_util.c
  ===================================================================
  RCS file: /export/home/cvs/apache-1.3/src/modules/proxy/proxy_util.c,v
  retrieving revision 1.76
  retrieving revision 1.77
  diff -u -r1.76 -r1.77
  --- proxy_util.c      1999/02/07 20:48:32     1.76
  +++ proxy_util.c      1999/02/16 14:29:53     1.77
  @@ -840,6 +840,10 @@
                             "<EM><A HREF=\"", r->uri, "\">",
                             r->method, "&nbsp;", r->uri, "</A></EM>.<P>\n"
                             "Reason: <STRONG>", message, "</STRONG>", NULL));
  +
  +    /* Allow the "error-notes" string to be printed by 
ap_send_error_response() */
  +    ap_table_setn(r->notes, "verbose-error-to", ap_pstrdup(r->pool, "*"));
  +
       r->status_line = ap_psprintf(r->pool, "%3.3u Proxy Error", statuscode);
       return statuscode;
   }
  
  
  

Reply via email to