craigmcc    00/12/15 20:03:30

  Modified:    catalina/src/share/org/apache/catalina/authenticator
                        BasicAuthenticator.java DigestAuthenticator.java
                        FormAuthenticator.java
               catalina/src/share/org/apache/catalina/connector
                        HttpResponseBase.java
  Log:
  Provide a last-ditch mechanism to provide an error message for responses
  when an HTTP status error is created (such as by a Valve attached to an
  Engine or Host).  Among other things, this change means you will get an
  "Unauthenticated" error message, instead of "NO DATA", when an
  authentication valve declares a user to be unauthenticated.
  
  Revision  Changes    Path
  1.6       +5 -5      
jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/authenticator/BasicAuthenticator.java
  
  Index: BasicAuthenticator.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/authenticator/BasicAuthenticator.java,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- BasicAuthenticator.java   2000/12/16 01:42:46     1.5
  +++ BasicAuthenticator.java   2000/12/16 04:03:29     1.6
  @@ -1,7 +1,7 @@
   /*
  - * $Header: 
/home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/authenticator/BasicAuthenticator.java,v
 1.5 2000/12/16 01:42:46 craigmcc Exp $
  - * $Revision: 1.5 $
  - * $Date: 2000/12/16 01:42:46 $
  + * $Header: 
/home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/authenticator/BasicAuthenticator.java,v
 1.6 2000/12/16 04:03:29 craigmcc Exp $
  + * $Revision: 1.6 $
  + * $Date: 2000/12/16 04:03:29 $
    *
    * ====================================================================
    *
  @@ -84,7 +84,7 @@
    * and Digest Access Authentication."
    *
    * @author Craig R. McClanahan
  - * @version $Revision: 1.5 $ $Date: 2000/12/16 01:42:46 $
  + * @version $Revision: 1.6 $ $Date: 2000/12/16 04:03:29 $
    */
   
   public final class BasicAuthenticator
  @@ -174,7 +174,7 @@
                          "Basic realm=\"" + realmName + "\"");
           hres.setContentLength(0);
        hres.setStatus(HttpServletResponse.SC_UNAUTHORIZED);
  -     hres.flushBuffer();
  +        //   hres.flushBuffer();
        return (false);
   
       }
  
  
  
  1.5       +5 -5      
jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/authenticator/DigestAuthenticator.java
  
  Index: DigestAuthenticator.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/authenticator/DigestAuthenticator.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- DigestAuthenticator.java  2000/12/16 01:42:47     1.4
  +++ DigestAuthenticator.java  2000/12/16 04:03:29     1.5
  @@ -1,7 +1,7 @@
   /*
  - * $Header: 
/home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/authenticator/DigestAuthenticator.java,v
 1.4 2000/12/16 01:42:47 craigmcc Exp $
  - * $Revision: 1.4 $
  - * $Date: 2000/12/16 01:42:47 $
  + * $Header: 
/home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/authenticator/DigestAuthenticator.java,v
 1.5 2000/12/16 04:03:29 craigmcc Exp $
  + * $Revision: 1.5 $
  + * $Date: 2000/12/16 04:03:29 $
    *
    * ====================================================================
    *
  @@ -88,7 +88,7 @@
    * 
    * @author Craig R. McClanahan
    * @author Remy Maucherat
  - * @version $Revision: 1.4 $ $Date: 2000/12/16 01:42:47 $
  + * @version $Revision: 1.5 $ $Date: 2000/12/16 04:03:29 $
    */
   
   public final class DigestAuthenticator
  @@ -244,7 +244,7 @@
           
        setAuthenticateHeader(hreq, hres, config, nOnce);
        hres.setStatus(HttpServletResponse.SC_UNAUTHORIZED);
  -     hres.flushBuffer();
  +        //   hres.flushBuffer();
        return (false);
   
       }
  
  
  
  1.6       +5 -5      
jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/authenticator/FormAuthenticator.java
  
  Index: FormAuthenticator.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/authenticator/FormAuthenticator.java,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- FormAuthenticator.java    2000/12/16 01:42:47     1.5
  +++ FormAuthenticator.java    2000/12/16 04:03:29     1.6
  @@ -1,7 +1,7 @@
   /*
  - * $Header: 
/home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/authenticator/FormAuthenticator.java,v
 1.5 2000/12/16 01:42:47 craigmcc Exp $
  - * $Revision: 1.5 $
  - * $Date: 2000/12/16 01:42:47 $
  + * $Header: 
/home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/authenticator/FormAuthenticator.java,v
 1.6 2000/12/16 04:03:29 craigmcc Exp $
  + * $Revision: 1.6 $
  + * $Date: 2000/12/16 04:03:29 $
    *
    * ====================================================================
    *
  @@ -88,7 +88,7 @@
    * Authentication, as described in the Servlet API Specification, Version 2.2.
    *
    * @author Craig R. McClanahan
  - * @version $Revision: 1.5 $ $Date: 2000/12/16 01:42:47 $
  + * @version $Revision: 1.6 $ $Date: 2000/12/16 04:03:29 $
    */
   
   public final class FormAuthenticator
  @@ -194,7 +194,7 @@
            return (true);              // Perform the original request
        else {
            hres.sendError(HttpServletResponse.SC_BAD_REQUEST);
  -         hres.flushBuffer();
  +            //           hres.flushBuffer();
            return (false);
        }
   
  
  
  
  1.20      +37 -4     
jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/connector/HttpResponseBase.java
  
  Index: HttpResponseBase.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/connector/HttpResponseBase.java,v
  retrieving revision 1.19
  retrieving revision 1.20
  diff -u -r1.19 -r1.20
  --- HttpResponseBase.java     2000/12/05 04:44:14     1.19
  +++ HttpResponseBase.java     2000/12/16 04:03:29     1.20
  @@ -1,7 +1,7 @@
   /*
  - * $Header: 
/home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/connector/HttpResponseBase.java,v
 1.19 2000/12/05 04:44:14 remm Exp $
  - * $Revision: 1.19 $
  - * $Date: 2000/12/05 04:44:14 $
  + * $Header: 
/home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/connector/HttpResponseBase.java,v
 1.20 2000/12/16 04:03:29 craigmcc Exp $
  + * $Revision: 1.20 $
  + * $Date: 2000/12/16 04:03:29 $
    *
    * ====================================================================
    *
  @@ -96,7 +96,7 @@
    * methods need to be implemented.
    *
    * @author Craig R. McClanahan
  - * @version $Revision: 1.19 $ $Date: 2000/12/05 04:44:14 $
  + * @version $Revision: 1.20 $ $Date: 2000/12/16 04:03:29 $
    */
   
   public class HttpResponseBase
  @@ -168,6 +168,39 @@
        */
       public void finishResponse() throws IOException {
   
  +        // If an HTTP error >= 400 has been created with no content,
  +        // attempt to create a simple error message
  +        if (!isCommitted() &&
  +            (stream == null) && (writer == null) &&
  +            (status >= HttpServletResponse.SC_BAD_REQUEST) &&
  +            (contentType == null) &&
  +            (contentCount == 0)) {
  +            System.out.println("finishResponse: " + status + " " + message);
  +            try {
  +                setContentType("text/html");
  +                PrintWriter writer = getWriter();
  +                writer.println("<html>");
  +                writer.println("<head>");
  +                writer.println("<title>Tomcat Error Report</title>");
  +                writer.println("<br><br>");
  +                writer.println("<h1>HTTP Status ");
  +                writer.print(status);
  +                writer.print(" - ");
  +                if (message != null)
  +                    writer.print(message);
  +                else
  +                    writer.print(getStatusMessage(status));
  +                writer.println("</h1>");
  +                writer.println("</body>");
  +                writer.println("</html>");
  +            } catch (IOException e) {
  +                throw e;
  +            } catch (Throwable e) {
  +                ;       // Just eat it
  +            }
  +        }
  +
  +        // Flush the headers and finish this response
           sendHeaders();
           super.finishResponse();
   
  
  
  

Reply via email to