Fix bug 42071 - ISE on multiple UnavailableExceptions.
authormarkt <markt@13f79535-47bb-0310-9956-ffa450edef68>
Thu, 19 Apr 2007 02:28:08 +0000 (02:28 +0000)
committermarkt <markt@13f79535-47bb-0310-9956-ffa450edef68>
Thu, 19 Apr 2007 02:28:08 +0000 (02:28 +0000)
Allow recovery after an UnavailableException

git-svn-id: https://svn.apache.org/repos/asf/tomcat/tc6.0.x/trunk@530239 13f79535-47bb-0310-9956-ffa450edef68

java/org/apache/jasper/servlet/JspServletWrapper.java
webapps/docs/changelog.xml

index feb02b5..99a4397 100644 (file)
@@ -294,10 +294,16 @@ public class JspServletWrapper {
             }
 
             if ((available > 0L) && (available < Long.MAX_VALUE)) {
-                response.setDateHeader("Retry-After", available);
-                response.sendError
-                    (HttpServletResponse.SC_SERVICE_UNAVAILABLE,
-                     Localizer.getMessage("jsp.error.unavailable"));
+                if (available > System.currentTimeMillis()) {
+                    response.setDateHeader("Retry-After", available);
+                    response.sendError
+                        (HttpServletResponse.SC_SERVICE_UNAVAILABLE,
+                         Localizer.getMessage("jsp.error.unavailable"));
+                    return;
+                } else {
+                    // Wait period has expired. Reset.
+                    available = 0;
+                }
             }
 
             /*
index 0af3297..606de9d 100644 (file)
         TagData.REQUEST_TIME_VALUE when the attribute value is an EL expression.
         (markt)
       </fix>
+      <fix>
+        <bug>42071</bug> Fix IllegalStateException on multiple requests to
+        an unavailable JSP. Patch provided by Kawasima Kazuh. (markt)
+      </fix>
+      <fix>
+        After a JSP throws an UnavailableException allow it to be accessed once
+        the unavailable period has expired. (markt)
+      </fix>
     </changelog>
   </subsection>
 </section>