nacho       01/03/24 11:48:32

  Modified:    src/share/org/apache/tomcat/modules/generators
                        StaticInterceptor.java
  Log:
  Honoring the "If-Modified-Since" header..
  No more "Connection Broken Exceptions" in logs
  when using IE .
  
  Revision  Changes    Path
  1.8       +37 -2     
jakarta-tomcat/src/share/org/apache/tomcat/modules/generators/StaticInterceptor.java
  
  Index: StaticInterceptor.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-tomcat/src/share/org/apache/tomcat/modules/generators/StaticInterceptor.java,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- StaticInterceptor.java    2001/03/14 05:57:48     1.7
  +++ StaticInterceptor.java    2001/03/24 19:48:32     1.8
  @@ -240,7 +240,15 @@
   final class FileHandler extends Handler  {
       int realFileNote;
       Context context;
  -    
  +    /**
  +     * The set of SimpleDateFormat formats to use in getDateHeader().
  +     */
  +    protected static final SimpleDateFormat formats[] = {
  +     new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss zzz", Locale.US),
  +     new SimpleDateFormat("EEEEEE, dd-MMM-yy HH:mm:ss zzz", Locale.US),
  +     new SimpleDateFormat("EEE MMMM d HH:mm:ss yyyy", Locale.US)
  +    };
  +
       FileHandler() {
        //      setOrigin( Handler.ORIGIN_INTERNAL );
        name="tomcat.fileHandler";
  @@ -283,8 +291,35 @@
        }
   
        File file = new File( absPath );
  +        String headerValue=req.getHeader("If-Modified-Since");
  +/**/
  +        headerValue = req.getHeader("If-Modified-Since");
  +        if (headerValue != null) {
  +
  +            Date date = null;
  +
  +            // Parsing the HTTP Date
  +            for (int i = 0; (date == null) && (i < formats.length); i++) {
  +                try {
  +                    date = formats[i].parse(headerValue);
  +                } catch (ParseException e) {
  +                    ;
  +                }
  +            }
  +
  +            if ((date != null)
  +                && (file.lastModified() <= (date.getTime() + 1000)) ) {
  +                // The entity has not been modified since the date
  +                // specified by the client. This is not an error case.
  +                context.getContextManager().handleStatus( req, res, 304);
  +                return;
  +            }
  +
  +
  +        }
  +/**/
        if( debug>0) log( "After paranoic checks = " + absPath);
  -     
  +
           String mimeType=ctx.getMimeMap().getContentTypeFor(absPath);
   
        if (mimeType == null) {
  
  
  

Reply via email to