Merge 1.2.0 changes back to master.
diff --git a/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-postgresql/src/main/java/org/apache/guacamole/auth/postgresql/PostgreSQLAuthenticationProviderModule.java b/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-postgresql/src/main/java/org/apache/guacamole/auth/postgresql/PostgreSQLAuthenticationProviderModule.java
index 67fafe4..3dbbe3b 100644
--- a/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-postgresql/src/main/java/org/apache/guacamole/auth/postgresql/PostgreSQLAuthenticationProviderModule.java
+++ b/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-postgresql/src/main/java/org/apache/guacamole/auth/postgresql/PostgreSQLAuthenticationProviderModule.java
@@ -75,7 +75,15 @@
         
         // Check the SSL mode and set if configured.
         PostgreSQLSSLMode sslMode = environment.getPostgreSQLSSLMode();
-        driverProperties.setProperty("sslmode", sslMode.getDriverValue());
+        
+        /**
+         * Older versions of the PostgreSQL JDBC driver do not support directly
+         * setting the "prefer" mode; however, the behavior defined by this
+         * mode is the default if nothing is set, so if that mode is requested
+         * in guacamole.properties we just don't set sslmode in the driver.
+         */
+        if (sslMode != PostgreSQLSSLMode.PREFER)
+            driverProperties.setProperty("sslmode", sslMode.getDriverValue());
         
         // If SSL is enabled, check for and set other SSL properties.
         if (sslMode != PostgreSQLSSLMode.DISABLE) {