luehe       2003/03/12 18:26:32

  Modified:    catalina/src/share/org/apache/catalina/core
                        StandardHostValve.java
               catalina/src/share/org/apache/catalina/session
                        StandardSession.java
  Log:
  Fixed Bugtraq 4661001: setMaxInactiveInterval method does not function as expected.
  
  Revision  Changes    Path
  1.2       +5 -5      
jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/core/StandardHostValve.java
  
  Index: StandardHostValve.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/core/StandardHostValve.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- StandardHostValve.java    18 Jul 2002 16:48:06 -0000      1.1
  +++ StandardHostValve.java    13 Mar 2003 02:26:32 -0000      1.2
  @@ -171,7 +171,7 @@
               Manager manager = context.getManager();
               if (manager != null) {
                   Session session = manager.findSession(sessionId);
  -                if ((session != null) && session.isValid())
  +                if (session != null)
                       session.access();
               }
           }
  
  
  
  1.15      +27 -4     
jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/session/StandardSession.java
  
  Index: StandardSession.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/session/StandardSession.java,v
  retrieving revision 1.14
  retrieving revision 1.15
  diff -u -r1.14 -r1.15
  --- StandardSession.java      12 Mar 2003 03:53:15 -0000      1.14
  +++ StandardSession.java      13 Mar 2003 02:26:32 -0000      1.15
  @@ -605,6 +605,7 @@
           this.lastAccessedTime = this.thisAccessedTime;
           this.thisAccessedTime = System.currentTimeMillis();
   
  +     evaluateIfValid();
       }
   
   
  @@ -1501,6 +1502,28 @@
                   if (debug >= 2)
                       log("  storing attribute '" + saveNames.get(i) +
                           "' with value NOT_SERIALIZED");
  +            }
  +        }
  +
  +    }
  +
  +
  +    private void evaluateIfValid() {
  +        /*
  +      * If this session has expired or is in the process of expiring or
  +      * will never expire, return
  +      */
  +        if (!this.isValid || expiring || maxInactiveInterval < 0)
  +            return;
  +
  +        long timeNow = System.currentTimeMillis();
  +        int timeIdle =  (int) ((timeNow - lastAccessedTime) / 1000L);
  +
  +        if (timeIdle >= maxInactiveInterval) {
  +            try {
  +                expire();
  +            } catch (Throwable t) {
  +                log(sm.getString("standardSession.expireException"), t);
               }
           }
   
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to