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:
@@ -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...
|
||||||
|
|||||||
@@ -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;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user