You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@guacamole.apache.org by mj...@apache.org on 2018/01/30 23:44:47 UTC

[35/50] guacamole-client git commit: GUACAMOLE-197: Move RadiusClient object to a return value instead of class-level object; properly clean up RADIUS connections.

GUACAMOLE-197: Move RadiusClient object to a return value instead of class-level object; properly clean up RADIUS connections.


Project: http://git-wip-us.apache.org/repos/asf/guacamole-client/repo
Commit: http://git-wip-us.apache.org/repos/asf/guacamole-client/commit/249ea077
Tree: http://git-wip-us.apache.org/repos/asf/guacamole-client/tree/249ea077
Diff: http://git-wip-us.apache.org/repos/asf/guacamole-client/diff/249ea077

Branch: refs/heads/master
Commit: 249ea0776b4ac2fe178a03976252c283f9d05334
Parents: fa820cb
Author: Nick Couchman <vn...@apache.org>
Authored: Sun Jul 16 14:40:49 2017 -0400
Committer: Nick Couchman <vn...@apache.org>
Committed: Mon Jan 29 17:08:11 2018 -0500

----------------------------------------------------------------------
 .../radius/AuthenticationProviderService.java   |  6 ----
 .../auth/radius/RadiusConnectionService.java    | 30 +++++++-------------
 2 files changed, 11 insertions(+), 25 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/guacamole-client/blob/249ea077/extensions/guacamole-auth-radius/src/main/java/org/apache/guacamole/auth/radius/AuthenticationProviderService.java
----------------------------------------------------------------------
diff --git a/extensions/guacamole-auth-radius/src/main/java/org/apache/guacamole/auth/radius/AuthenticationProviderService.java b/extensions/guacamole-auth-radius/src/main/java/org/apache/guacamole/auth/radius/AuthenticationProviderService.java
index 530de15..eafdf83 100644
--- a/extensions/guacamole-auth-radius/src/main/java/org/apache/guacamole/auth/radius/AuthenticationProviderService.java
+++ b/extensions/guacamole-auth-radius/src/main/java/org/apache/guacamole/auth/radius/AuthenticationProviderService.java
@@ -160,9 +160,6 @@ public class AuthenticationProviderService {
                 logger.debug("Error configuring RADIUS server.", e);
                 throw new GuacamoleInvalidCredentialsException("Authentication error.", CredentialsInfo.USERNAME_PASSWORD);
             }
-            finally {
-                radiusService.disconnect();
-            }
         }
 
         // This is a response to a previous challenge, authenticate with that.
@@ -177,9 +174,6 @@ public class AuthenticationProviderService {
                 logger.debug("Error configuring RADIUS server.", e);
                 throw new GuacamoleInvalidCredentialsException("Authentication error.", CredentialsInfo.USERNAME_PASSWORD);
             }
-            finally {
-                radiusService.disconnect();
-            }
         }
 
         // No RadiusPacket is returned, we've encountered an error.

http://git-wip-us.apache.org/repos/asf/guacamole-client/blob/249ea077/extensions/guacamole-auth-radius/src/main/java/org/apache/guacamole/auth/radius/RadiusConnectionService.java
----------------------------------------------------------------------
diff --git a/extensions/guacamole-auth-radius/src/main/java/org/apache/guacamole/auth/radius/RadiusConnectionService.java b/extensions/guacamole-auth-radius/src/main/java/org/apache/guacamole/auth/radius/RadiusConnectionService.java
index 22c8d82..9dd39a3 100644
--- a/extensions/guacamole-auth-radius/src/main/java/org/apache/guacamole/auth/radius/RadiusConnectionService.java
+++ b/extensions/guacamole-auth-radius/src/main/java/org/apache/guacamole/auth/radius/RadiusConnectionService.java
@@ -64,11 +64,6 @@ public class RadiusConnectionService {
 
 
     /**
-     * The RADIUS client;
-     */
-    private RadiusClient radiusClient;
-
-    /**
      * Creates a new instance of RadiusClient, configured with parameters
      * from guacamole.properties.
      *
@@ -76,11 +71,11 @@ public class RadiusConnectionService {
      *     If an error occurs while parsing guacamole.properties, or if the
      *     configuration of RadiusClient fails.
      */
-    private void createRadiusConnection() {
+    private RadiusClient createRadiusConnection() {
 
         // Create the RADIUS client with the configuration parameters
         try {
-            radiusClient = new RadiusClient(InetAddress.getByName(confService.getRadiusServer()),
+            return new RadiusClient(InetAddress.getByName(confService.getRadiusServer()),
                                             confService.getRadiusSharedSecret(),
                                             confService.getRadiusAuthPort(),
                                             confService.getRadiusAcctPort(),
@@ -99,6 +94,8 @@ public class RadiusConnectionService {
             logger.debug("Failed to communicate with host.", e);
         }
 
+        return null;
+
     }
 
     /**
@@ -110,7 +107,8 @@ public class RadiusConnectionService {
      *     with parameters from guacamole.properties, or null if
      *     configuration fails.
      */
-    private RadiusAuthenticator setupRadiusAuthenticator() throws GuacamoleException {
+    private RadiusAuthenticator setupRadiusAuthenticator(RadiusClient radiusClient)
+            throws GuacamoleException {
 
         // If we don't have a radiusClient object, yet, don't go any further.
         if (radiusClient == null) {
@@ -196,7 +194,7 @@ public class RadiusConnectionService {
         }
 
         // Create the RADIUS connection and set up the dictionary
-        createRadiusConnection();
+        RadiusClient radiusClient = createRadiusConnection();
         AttributeFactory.loadAttributeDictionary("net.jradius.dictionary.AttributeDictionaryImpl");
 
         // Client failed to set up, so we return null
@@ -204,7 +202,7 @@ public class RadiusConnectionService {
             return null;
 
         // Set up the RadiusAuthenticator
-        RadiusAuthenticator radAuth = setupRadiusAuthenticator();
+        RadiusAuthenticator radAuth = setupRadiusAuthenticator(radiusClient);
         if (radAuth == null)
             throw new GuacamoleException("Unknown RADIUS authentication protocol.");
 
@@ -248,6 +246,9 @@ public class RadiusConnectionService {
             logger.debug("Unknown RADIUS algorithm.", e);
             return null;
         }
+        finally {
+            radiusClient.close();
+        }
     }
 
     public RadiusPacket sendChallengeResponse(String username, String response, String state)
@@ -272,13 +273,4 @@ public class RadiusConnectionService {
 
     }
 
-    /**
-     * Disconnects the current RADIUS connection.
-     */
-    public void disconnect() {
-
-        radiusClient.close();
-
-    }
-
 }