Honor ldap.connectTimeout also without connection pooling

The com.sun.jndi.ldap.connect.timeout env variable is independent from
whether LDAP connection pooling is used or not.

Change-Id: I8e84efa89deb5c292d51e941e0a325cb7fc3f0a6
This commit is contained in:
Saša Živkov
2015-01-19 16:24:44 +01:00
parent 0705733edc
commit 0524c80b88
2 changed files with 21 additions and 16 deletions

View File

@@ -2399,9 +2399,7 @@ By default, false.
[[ldap.connectTimeout]]ldap.connectTimeout:: [[ldap.connectTimeout]]ldap.connectTimeout::
+ +
_(Optional)_ Specify how long to wait for a pooled connection. _(Optional)_ Timeout period for establishment of an LDAP connection.
This is also used to specify a timeout period for establishment
of the LDAP connection.
+ +
The value is in the usual time-unit format like "1 s", "100 ms", The value is in the usual time-unit format like "1 s", "100 ms",
etc... etc...

View File

@@ -65,14 +65,9 @@ import javax.security.auth.login.LoginException;
Map<String, String> r = Maps.newHashMap(); Map<String, String> r = Maps.newHashMap();
r.put("com.sun.jndi.ldap.connect.pool", "true"); r.put("com.sun.jndi.ldap.connect.pool", "true");
String connectTimeout = LdapRealm.optional(config, "connectTimeout");
String poolDebug = LdapRealm.optional(config, "poolDebug"); String poolDebug = LdapRealm.optional(config, "poolDebug");
String poolTimeout = LdapRealm.optional(config, "poolTimeout"); String poolTimeout = LdapRealm.optional(config, "poolTimeout");
if (connectTimeout != null) {
r.put("com.sun.jndi.ldap.connect.timeout", Long.toString(ConfigUtil
.getTimeUnit(connectTimeout, 0, TimeUnit.MILLISECONDS)));
}
r.put("com.sun.jndi.ldap.connect.pool.authentication", r.put("com.sun.jndi.ldap.connect.pool.authentication",
LdapRealm.optional(config, "poolAuthentication", "none simple")); LdapRealm.optional(config, "poolAuthentication", "none simple"));
if (poolDebug != null) { if (poolDebug != null) {
@@ -105,7 +100,8 @@ import javax.security.auth.login.LoginException;
private final boolean sslVerify; private final boolean sslVerify;
private final String authentication; private final String authentication;
private volatile LdapSchema ldapSchema; private volatile LdapSchema ldapSchema;
private final String readTimeOutMillis; private final String readTimeoutMillis;
private final String connectTimeoutMillis;
private final Map<String, String> connectionPoolConfig; private final Map<String, String> connectionPoolConfig;
@Inject @Inject
@@ -120,13 +116,21 @@ import javax.security.auth.login.LoginException;
this.sslVerify = config.getBoolean("ldap", "sslverify", true); this.sslVerify = config.getBoolean("ldap", "sslverify", true);
this.authentication = this.authentication =
LdapRealm.optional(config, "authentication", "simple"); LdapRealm.optional(config, "authentication", "simple");
String timeout = LdapRealm.optional(config, "readTimeout"); String readTimeout = LdapRealm.optional(config, "readTimeout");
if (timeout != null) { if (readTimeout != null) {
readTimeOutMillis = readTimeoutMillis =
Long.toString(ConfigUtil.getTimeUnit(timeout, 0, Long.toString(ConfigUtil.getTimeUnit(readTimeout, 0,
TimeUnit.MILLISECONDS)); TimeUnit.MILLISECONDS));
} else { } else {
readTimeOutMillis = null; readTimeoutMillis = null;
}
String connectTimeout = LdapRealm.optional(config, "connectTimeout");
if (connectTimeout != null) {
connectTimeoutMillis =
Long.toString(ConfigUtil.getTimeUnit(connectTimeout, 0,
TimeUnit.MILLISECONDS));
} else {
connectTimeoutMillis = null;
} }
this.groupsByInclude = groupsByInclude; this.groupsByInclude = groupsByInclude;
this.connectionPoolConfig = getPoolProperties(config); this.connectionPoolConfig = getPoolProperties(config);
@@ -140,8 +144,11 @@ import javax.security.auth.login.LoginException;
Class<? extends SSLSocketFactory> factory = BlindSSLSocketFactory.class; Class<? extends SSLSocketFactory> factory = BlindSSLSocketFactory.class;
env.put("java.naming.ldap.factory.socket", factory.getName()); env.put("java.naming.ldap.factory.socket", factory.getName());
} }
if (readTimeOutMillis != null) { if (readTimeoutMillis != null) {
env.put("com.sun.jndi.ldap.read.timeout", readTimeOutMillis); env.put("com.sun.jndi.ldap.read.timeout", readTimeoutMillis);
}
if (connectTimeoutMillis != null) {
env.put("com.sun.jndi.ldap.connect.timeout", connectTimeoutMillis);
} }
return env; return env;
} }