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]