From b6c734ddcf5f0e75191264188da288d60d074051 Mon Sep 17 00:00:00 2001 From: Michael Jumper Date: Tue, 8 Sep 2015 22:00:36 -0700 Subject: [PATCH] GUAC-1335: Properly release parent balancing groups if child acquire fails. --- .../tunnel/AbstractGuacamoleTunnelService.java | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/glyptodon/guacamole/auth/jdbc/tunnel/AbstractGuacamoleTunnelService.java b/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/glyptodon/guacamole/auth/jdbc/tunnel/AbstractGuacamoleTunnelService.java index 051f6a9cb..0d4106ae5 100644 --- a/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/glyptodon/guacamole/auth/jdbc/tunnel/AbstractGuacamoleTunnelService.java +++ b/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/glyptodon/guacamole/auth/jdbc/tunnel/AbstractGuacamoleTunnelService.java @@ -522,8 +522,18 @@ public abstract class AbstractGuacamoleTunnelService implements GuacamoleTunnelS // Acquire group acquire(user, connectionGroup); - // Acquire and connect to any child - ModeledConnection connection = acquire(user, connections); + // Attempt to acquire to any child + ModeledConnection connection; + try { + connection = acquire(user, connections); + } + + // Ensure connection group is always released if child acquire fails + finally { + release(user, connectionGroup); + } + + // Connect to acquired child return assignGuacamoleTunnel(new ActiveConnectionRecord(user, connectionGroup, connection), info); }