From 1e46ca2287c5d8491b8f0dde940f9024059b4140 Mon Sep 17 00:00:00 2001 From: pabloFuente Date: Tue, 8 Jan 2019 15:38:53 +0100 Subject: [PATCH] Remove HttpSession timeout and invalidate sessions on websockets close --- .../src/main/java/io/openvidu/server/OpenViduServer.java | 1 + .../src/main/java/io/openvidu/server/rpc/RpcHandler.java | 9 +++++++++ 2 files changed, 10 insertions(+) diff --git a/openvidu-server/src/main/java/io/openvidu/server/OpenViduServer.java b/openvidu-server/src/main/java/io/openvidu/server/OpenViduServer.java index e1b71036..fb1dc2d9 100644 --- a/openvidu-server/src/main/java/io/openvidu/server/OpenViduServer.java +++ b/openvidu-server/src/main/java/io/openvidu/server/OpenViduServer.java @@ -175,6 +175,7 @@ public class OpenViduServer implements JsonRpcConfigurer { public static void main(String[] args) throws Exception { log.info("Using /dev/urandom for secure random generation"); System.setProperty("java.security.egd", "file:/dev/./urandom"); + System.setProperty("server.session.timeout", "2137483647"); SpringApplication.run(OpenViduServer.class, args); } diff --git a/openvidu-server/src/main/java/io/openvidu/server/rpc/RpcHandler.java b/openvidu-server/src/main/java/io/openvidu/server/rpc/RpcHandler.java index ab0bd7b9..f269cfad 100644 --- a/openvidu-server/src/main/java/io/openvidu/server/rpc/RpcHandler.java +++ b/openvidu-server/src/main/java/io/openvidu/server/rpc/RpcHandler.java @@ -24,6 +24,8 @@ import java.util.List; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentMap; +import javax.servlet.http.HttpSession; + import org.kurento.jsonrpc.DefaultJsonRpcHandler; import org.kurento.jsonrpc.Session; import org.kurento.jsonrpc.Transaction; @@ -33,6 +35,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpHeaders; +import org.springframework.web.socket.WebSocketSession; import com.google.gson.JsonElement; import com.google.gson.JsonObject; @@ -562,6 +565,12 @@ public class RpcHandler extends DefaultJsonRpcHandler { public void afterConnectionClosed(Session rpcSession, String status) throws Exception { log.info("After connection closed for WebSocket session: {} - Status: {}", rpcSession.getSessionId(), status); + if (rpcSession instanceof WebSocketServerSession) { + WebSocketSession wsSession = ((WebSocketServerSession) rpcSession).getWebSocketSession(); + HttpSession httpSession = (HttpSession) wsSession.getAttributes().get("httpSession"); + httpSession.invalidate(); + } + String rpcSessionId = rpcSession.getSessionId(); String message = "";