From 7d88e471709c13dc4df388a73b3824901c9fef09 Mon Sep 17 00:00:00 2001 From: Simon Rettberg Date: Tue, 5 May 2020 18:40:42 +0200 Subject: Prevent user from sticking to connection if it was reset. Make a copy of the AvailableConnection for the ConnectionWrapper, so we don't update the password for the already active connection, if it changes, which defeats the purpose of this mechanism altogether. --- .../java/de/bwlehrpool/bwlp_guac/AvailableClient.java | 15 ++++++++++++++- .../java/de/bwlehrpool/bwlp_guac/WrappedConnection.java | 2 +- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/src/main/java/de/bwlehrpool/bwlp_guac/AvailableClient.java b/src/main/java/de/bwlehrpool/bwlp_guac/AvailableClient.java index 0318965..c886397 100644 --- a/src/main/java/de/bwlehrpool/bwlp_guac/AvailableClient.java +++ b/src/main/java/de/bwlehrpool/bwlp_guac/AvailableClient.java @@ -9,7 +9,7 @@ import org.slf4j.LoggerFactory; import de.bwlehrpool.bwlp_guac.JsonClient.State; -public class AvailableClient { +public class AvailableClient implements Cloneable { private static final Logger LOGGER = LoggerFactory.getLogger(AvailableClient.class); @@ -37,6 +37,10 @@ public class AvailableClient { this.clientip = source.clientip; update(source); } + + private AvailableClient(String clientip) { + this.clientip = clientip; + } /** * Update this client's state, resetting "in use" if appropriate. Ie, the @@ -154,5 +158,14 @@ public class AvailableClient { return this.connectionOk = false; } } + + @Override + public AvailableClient clone() { + AvailableClient c = new AvailableClient(this.clientip); + c.state = this.state; + c.inUseBy = this.inUseBy; + c.password = this.password; + return c; + } } diff --git a/src/main/java/de/bwlehrpool/bwlp_guac/WrappedConnection.java b/src/main/java/de/bwlehrpool/bwlp_guac/WrappedConnection.java index 616c20c..3d46e73 100644 --- a/src/main/java/de/bwlehrpool/bwlp_guac/WrappedConnection.java +++ b/src/main/java/de/bwlehrpool/bwlp_guac/WrappedConnection.java @@ -11,7 +11,7 @@ public class WrappedConnection extends SimpleConnection { public WrappedConnection(String name, AvailableClient ac) { super(name, name, makeConfig(ac)); - this.ac = ac; + this.ac = ac.clone(); setParentIdentifier(DEFAULT_ROOT_CONNECTION_GROUP); } -- cgit v1.2.3-55-g7522