You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by ta...@apache.org on 2022/10/19 10:30:31 UTC

[myfaces] branch 2.3-next updated: MYFACES-4445: websockets refactoring - close sessionScope fix (#347)

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

tandraschko pushed a commit to branch 2.3-next
in repository https://gitbox.apache.org/repos/asf/myfaces.git


The following commit(s) were added to refs/heads/2.3-next by this push:
     new cfe0454e9 MYFACES-4445: websockets refactoring - close sessionScope fix (#347)
cfe0454e9 is described below

commit cfe0454e9d4bcb95365d7ad553544c65e6c3d001
Author: Milan Siebenbürger <mi...@gmail.com>
AuthorDate: Wed Oct 19 12:30:27 2022 +0200

    MYFACES-4445: websockets refactoring - close sessionScope fix (#347)
    
    - only websockets created attached to session scope are removed (not application scope)
    
    Co-authored-by: siebenburger <mi...@aura.cz>
---
 .../java/org/apache/myfaces/push/cdi/WebsocketScopeManager.java  | 9 ++++++---
 1 file changed, 6 insertions(+), 3 deletions(-)

diff --git a/impl/src/main/java/org/apache/myfaces/push/cdi/WebsocketScopeManager.java b/impl/src/main/java/org/apache/myfaces/push/cdi/WebsocketScopeManager.java
index 06cd6b41c..98d2fa7fe 100644
--- a/impl/src/main/java/org/apache/myfaces/push/cdi/WebsocketScopeManager.java
+++ b/impl/src/main/java/org/apache/myfaces/push/cdi/WebsocketScopeManager.java
@@ -103,10 +103,13 @@ public class WebsocketScopeManager
             // When current session scope is about to be destroyed, deregister all session scope channels and
             // explicitly close any open web sockets associated with it to avoid stale websockets.
             // If any, also deregister session users.
-            for (String token : tokens.keySet())
+            for (Map.Entry<String, WebsocketChannelMetadata> entry : tokens.entrySet())
             {
-                // remove channelToken
-                sessionManager.removeChannelToken(token);
+                // remove channelToken - only if it is session scope
+                if (WebsocketScopeManager.SCOPE_SESSION.equals(entry.getValue().getScope()))
+                {
+                    sessionManager.removeChannelToken(entry.getKey());
+                }
             }
 
             // we dont need to destroy child sockets ("view")