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();