This is an automated email from the ASF dual-hosted git repository.

markt-asf pushed a commit to branch 9.0.x
in repository https://gitbox.apache.org/repos/asf/tomcat.git


The following commit(s) were added to refs/heads/9.0.x by this push:
     new 09e358fc5c Follow-up "Avoid some scenarios of expiration of never 
expire sessions"
09e358fc5c is described below

commit 09e358fc5c95e4b54778cdfa9219fc67f9a19583
Author: Mark Thomas <[email protected]>
AuthorDate: Fri Aug 28 14:11:43 2026 +0100

    Follow-up "Avoid some scenarios of expiration of never expire sessions"
    
    getMaxInactiveInterval == 0 is documented as never expire.
---
 java/org/apache/catalina/session/DataSourceStore.java | 2 +-
 java/org/apache/catalina/session/StoreBase.java       | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/java/org/apache/catalina/session/DataSourceStore.java 
b/java/org/apache/catalina/session/DataSourceStore.java
index c3dae78c41..0f9a7965df 100644
--- a/java/org/apache/catalina/session/DataSourceStore.java
+++ b/java/org/apache/catalina/session/DataSourceStore.java
@@ -74,7 +74,7 @@ public class DataSourceStore extends JDBCStore {
     private String[] keys(boolean expiredOnly) throws IOException {
         String sqlTmp = "SELECT " + sessionIdCol + " FROM " + sessionTable + " 
WHERE " + sessionAppCol + " = ?";
         if (expiredOnly) {
-            sqlTmp += " AND " + sessionMaxInactiveCol + " >= 0";
+            sqlTmp += " AND " + sessionMaxInactiveCol + " > 0";
             sqlTmp += " AND (" + sessionLastAccessedCol + " + " + 
sessionMaxInactiveCol + " * 1000 < ?)";
         }
         final String keysSql = sqlTmp;
diff --git a/java/org/apache/catalina/session/StoreBase.java 
b/java/org/apache/catalina/session/StoreBase.java
index ee5a7d9dc5..056c08ebad 100644
--- a/java/org/apache/catalina/session/StoreBase.java
+++ b/java/org/apache/catalina/session/StoreBase.java
@@ -161,7 +161,7 @@ public abstract class StoreBase extends LifecycleBase 
implements Store {
                 }
                 int timeIdle = (int) ((timeNow - 
session.getThisAccessedTime()) / 1000L);
                 int maxInactive = session.getMaxInactiveInterval();
-                if (maxInactive < 0 || timeIdle < maxInactive) {
+                if (maxInactive <= 0 || timeIdle < maxInactive) {
                     continue;
                 }
                 if (manager.getContext().getLogger().isTraceEnabled()) {


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to