From: markt Date: Fri, 10 Dec 2010 13:54:16 +0000 (+0000) Subject: Fix https://issues.apache.org/bugzilla/show_bug.cgi?id=50448 X-Git-Url: https://git.internetallee.de/?a=commitdiff_plain;h=41ef9950c756e4630e20b2e9a58841955c82465e;p=tomcat7.0 Fix https://issues.apache.org/bugzilla/show_bug.cgi?id=50448 Regression caused by http://svn.apache.org/viewvc?view=revision&revision=1036281 git-svn-id: https://svn.apache.org/repos/asf/tomcat/trunk@1044359 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/java/org/apache/catalina/Session.java b/java/org/apache/catalina/Session.java index 3299114ef..eed50ba82 100644 --- a/java/org/apache/catalina/Session.java +++ b/java/org/apache/catalina/Session.java @@ -90,6 +90,13 @@ public interface Session { /** + * Return the creation time for this session, bypassing the session validity + * checks. + */ + public long getCreationTimeInternal(); + + + /** * Set the creation time for this session. This method is called by the * Manager when an existing Session instance is reused. * diff --git a/java/org/apache/catalina/manager/DummyProxySession.java b/java/org/apache/catalina/manager/DummyProxySession.java index 54724bf4e..3bd7baceb 100644 --- a/java/org/apache/catalina/manager/DummyProxySession.java +++ b/java/org/apache/catalina/manager/DummyProxySession.java @@ -64,6 +64,11 @@ public class DummyProxySession implements Session { } @Override + public long getCreationTimeInternal() { + return 0; + } + + @Override public String getId() { return sessionId; } diff --git a/java/org/apache/catalina/session/ManagerBase.java b/java/org/apache/catalina/session/ManagerBase.java index 2ad20794d..0d0eaafad 100644 --- a/java/org/apache/catalina/session/ManagerBase.java +++ b/java/org/apache/catalina/session/ManagerBase.java @@ -799,7 +799,8 @@ public abstract class ManagerBase extends LifecycleMBeanBase // the manager because it is being persisted - update the expired stats if (update) { long timeNow = System.currentTimeMillis(); - int timeAlive = (int) ((timeNow - session.getCreationTime())/1000); + int timeAlive = + (int) (timeNow - session.getCreationTimeInternal())/1000; updateSessionMaxAliveTime(timeAlive); expiredSessions.incrementAndGet(); SessionTiming timing = new SessionTiming(timeNow, timeAlive); diff --git a/java/org/apache/catalina/session/StandardSession.java b/java/org/apache/catalina/session/StandardSession.java index 2c3227fa3..641370ecf 100644 --- a/java/org/apache/catalina/session/StandardSession.java +++ b/java/org/apache/catalina/session/StandardSession.java @@ -1102,6 +1102,16 @@ public class StandardSession implements HttpSession, Session, Serializable { /** + * Return the time when this session was created, in milliseconds since + * midnight, January 1, 1970 GMT, bypassing the session validation checks. + */ + @Override + public long getCreationTimeInternal() { + return this.creationTime; + } + + + /** * Return the ServletContext to which this session belongs. */ @Override diff --git a/webapps/docs/changelog.xml b/webapps/docs/changelog.xml index e483365ae..038b87822 100644 --- a/webapps/docs/changelog.xml +++ b/webapps/docs/changelog.xml @@ -126,6 +126,10 @@ 50413: Ensure 304 responses are not returned when using static files as error pages. (markt) + + 50448: Fix possible IllegalStateException + caused by recent session management refactoring. (markt) +