From cf5afb92629abf6653abe3ff91876ebb70f9257e Mon Sep 17 00:00:00 2001
From: Matthew Swift <matthew.swift@forgerock.com>
Date: Wed, 08 Jan 2014 14:23:51 +0000
Subject: [PATCH] Fix OPENDJ-1270: Avoid unnecessary DNS lookups when performing bind requests
---
opendj-sdk/opendj-ldap-sdk/src/main/java/com/forgerock/opendj/ldap/LDAPConnectionFactoryImpl.java | 10 +-
opendj-sdk/opendj-ldap-sdk/src/test/java/com/forgerock/opendj/ldap/LDAPConnectionTestCase.java | 6
opendj-sdk/opendj-ldap-sdk/src/main/java/com/forgerock/opendj/ldap/LDAPConnection.java | 10 -
opendj-sdk/opendj-ldap-sdk/src/main/java/org/forgerock/opendj/ldap/LDAPListener.java | 54 ++++---------
opendj-sdk/opendj-ldap-sdk/src/main/java/com/forgerock/opendj/ldap/LDAPListenerImpl.java | 20 +++-
opendj-sdk/opendj-ldap-sdk/src/test/java/org/forgerock/opendj/ldap/TestCaseUtils.java | 8 +-
opendj-sdk/opendj-ldap-sdk/src/test/java/org/forgerock/opendj/ldap/LDAPServer.java | 10 +-
opendj-sdk/opendj-ldap-sdk/src/main/java/com/forgerock/opendj/util/StaticUtils.java | 46 +++++++++++
opendj-sdk/opendj-ldap-sdk/src/main/java/org/forgerock/opendj/ldap/LDAPConnectionFactory.java | 49 ++++--------
9 files changed, 114 insertions(+), 99 deletions(-)
diff --git a/opendj-sdk/opendj-ldap-sdk/src/main/java/com/forgerock/opendj/ldap/LDAPConnection.java b/opendj-sdk/opendj-ldap-sdk/src/main/java/com/forgerock/opendj/ldap/LDAPConnection.java
index 03bcc4d..ed4bd3f 100644
--- a/opendj-sdk/opendj-ldap-sdk/src/main/java/com/forgerock/opendj/ldap/LDAPConnection.java
+++ b/opendj-sdk/opendj-ldap-sdk/src/main/java/com/forgerock/opendj/ldap/LDAPConnection.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2010 Sun Microsystems, Inc.
- * Portions Copyright 2011-2013 ForgeRock AS
+ * Portions Copyright 2011-2014 ForgeRock AS
*/
package com.forgerock.opendj.ldap;
@@ -32,7 +32,6 @@
import static org.forgerock.opendj.ldap.ErrorResultException.newErrorResult;
import java.io.IOException;
-import java.net.InetSocketAddress;
import java.security.GeneralSecurityException;
import java.util.List;
import java.util.concurrent.ConcurrentHashMap;
@@ -82,6 +81,7 @@
import org.glassfish.grizzly.ssl.SSLFilter;
import com.forgerock.opendj.util.CompletedFutureResult;
+import com.forgerock.opendj.util.StaticUtils;
import com.forgerock.opendj.util.Validator;
/**
@@ -253,11 +253,7 @@
final int messageID = nextMsgID.getAndIncrement();
final BindClient context;
try {
- context =
- request.createBindClient(
- connection.getPeerAddress() instanceof InetSocketAddress
- ? ((InetSocketAddress) connection.getPeerAddress()).getHostName()
- : connection.getPeerAddress().toString());
+ context = request.createBindClient(StaticUtils.getHostName(factory.getSocketAddress()));
} catch (final Exception e) {
// FIXME: I18N need to have a better error message.
// FIXME: Is this the best result code?
diff --git a/opendj-sdk/opendj-ldap-sdk/src/main/java/com/forgerock/opendj/ldap/LDAPConnectionFactoryImpl.java b/opendj-sdk/opendj-ldap-sdk/src/main/java/com/forgerock/opendj/ldap/LDAPConnectionFactoryImpl.java
index 4298c45..49d6fa1 100644
--- a/opendj-sdk/opendj-ldap-sdk/src/main/java/com/forgerock/opendj/ldap/LDAPConnectionFactoryImpl.java
+++ b/opendj-sdk/opendj-ldap-sdk/src/main/java/com/forgerock/opendj/ldap/LDAPConnectionFactoryImpl.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2010 Sun Microsystems, Inc.
- * Portions copyright 2011-2013 ForgeRock AS
+ * Portions copyright 2011-2014 ForgeRock AS
*/
package com.forgerock.opendj.ldap;
@@ -32,7 +32,7 @@
import static org.forgerock.opendj.ldap.ErrorResultException.*;
import java.io.IOException;
-import java.net.SocketAddress;
+import java.net.InetSocketAddress;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicBoolean;
@@ -208,7 +208,7 @@
private final LDAPClientFilter clientFilter;
private final FilterChain defaultFilterChain;
private final LDAPOptions options;
- private final SocketAddress socketAddress;
+ private final InetSocketAddress socketAddress;
/**
* Prevents the transport and timeoutChecker being released when there are
@@ -236,7 +236,7 @@
* @param options
* The LDAP connection options to use when creating connections.
*/
- public LDAPConnectionFactoryImpl(final SocketAddress address, final LDAPOptions options) {
+ public LDAPConnectionFactoryImpl(final InetSocketAddress address, final LDAPOptions options) {
this.transport = DEFAULT_TRANSPORT.acquireIfNull(options.getTCPNIOTransport());
this.socketAddress = address;
this.options = new LDAPOptions(options);
@@ -281,7 +281,7 @@
*
* @return The address of the Directory Server.
*/
- public SocketAddress getSocketAddress() {
+ public InetSocketAddress getSocketAddress() {
return socketAddress;
}
diff --git a/opendj-sdk/opendj-ldap-sdk/src/main/java/com/forgerock/opendj/ldap/LDAPListenerImpl.java b/opendj-sdk/opendj-ldap-sdk/src/main/java/com/forgerock/opendj/ldap/LDAPListenerImpl.java
index 34ae160..e1d9604 100644
--- a/opendj-sdk/opendj-ldap-sdk/src/main/java/com/forgerock/opendj/ldap/LDAPListenerImpl.java
+++ b/opendj-sdk/opendj-ldap-sdk/src/main/java/com/forgerock/opendj/ldap/LDAPListenerImpl.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2010 Sun Microsystems, Inc.
- * Portions copyright 2011-2013 ForgeRock AS
+ * Portions copyright 2011-2014 ForgeRock AS
*/
package com.forgerock.opendj.ldap;
@@ -32,7 +32,7 @@
import java.io.Closeable;
import java.io.IOException;
-import java.net.SocketAddress;
+import java.net.InetSocketAddress;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.logging.Level;
@@ -48,6 +48,7 @@
import org.glassfish.grizzly.nio.transport.TCPNIOTransport;
import com.forgerock.opendj.util.ReferenceCountedObject;
+import com.forgerock.opendj.util.StaticUtils;
/**
* LDAP listener implementation.
@@ -58,6 +59,7 @@
private final ServerConnectionFactory<LDAPClientContext, Integer> connectionFactory;
private final TCPNIOServerConnection serverConnection;
private final AtomicBoolean isClosed = new AtomicBoolean();
+ private final InetSocketAddress socketAddress;
/**
* Creates a new LDAP listener implementation which will listen for LDAP
@@ -74,7 +76,7 @@
* If an error occurred while trying to listen on the provided
* address.
*/
- public LDAPListenerImpl(final SocketAddress address,
+ public LDAPListenerImpl(final InetSocketAddress address,
final ServerConnectionFactory<LDAPClientContext, Integer> factory,
final LDAPListenerOptions options) throws IOException {
this.transport = DEFAULT_TRANSPORT.acquireIfNull(options.getTCPNIOTransport());
@@ -88,6 +90,14 @@
final TCPNIOBindingHandler bindingHandler =
TCPNIOBindingHandler.builder(transport.get()).processor(defaultFilterChain).build();
this.serverConnection = bindingHandler.bind(address, options.getBacklog());
+
+ /*
+ * Get the socket address now, ensuring that the host is the same as the
+ * one provided in the constructor. The port will have changed if 0 was
+ * passed in.
+ */
+ final int port = ((InetSocketAddress) serverConnection.getLocalAddress()).getPort();
+ socketAddress = new InetSocketAddress(StaticUtils.getHostName(address), port);
}
@Override
@@ -110,8 +120,8 @@
*
* @return The address that this LDAP listener is listening on.
*/
- public SocketAddress getSocketAddress() {
- return serverConnection.getLocalAddress();
+ public InetSocketAddress getSocketAddress() {
+ return socketAddress;
}
@Override
diff --git a/opendj-sdk/opendj-ldap-sdk/src/main/java/com/forgerock/opendj/util/StaticUtils.java b/opendj-sdk/opendj-ldap-sdk/src/main/java/com/forgerock/opendj/util/StaticUtils.java
index 90a6c94..f3fb807 100644
--- a/opendj-sdk/opendj-ldap-sdk/src/main/java/com/forgerock/opendj/util/StaticUtils.java
+++ b/opendj-sdk/opendj-ldap-sdk/src/main/java/com/forgerock/opendj/util/StaticUtils.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2009-2010 Sun Microsystems, Inc.
- * Portions copyright 2011-2013 ForgeRock AS
+ * Portions copyright 2011-2014 ForgeRock AS
*/
package com.forgerock.opendj.util;
@@ -33,6 +33,8 @@
import java.io.Closeable;
import java.io.IOException;
import java.lang.reflect.InvocationTargetException;
+import java.net.InetAddress;
+import java.net.InetSocketAddress;
import java.nio.ByteBuffer;
import java.nio.CharBuffer;
import java.nio.charset.Charset;
@@ -2223,6 +2225,48 @@
return ' ';
}
+ /**
+ * Returns the host name associated with the provided {@code InetSocketAddress},
+ * without performing a DNS lookup.
+ *
+ * @param socketAddress
+ * The socket address which is expected to be an instance of
+ * {@code InetSocketAddress}.
+ * @return The host name associated with the provided {@code SocketAddress},
+ * or {@code null} if it is unknown.
+ */
+ public static String getHostName(final InetSocketAddress socketAddress) {
+ /*
+ * See OPENDJ-1270 for more information about slow DNS queries.
+ *
+ * We must avoid calling getHostName() in the case where it is likely to
+ * perform a blocking DNS query. Ideally we would call getHostString(),
+ * but the method was only added in JDK7.
+ */
+ if (socketAddress.isUnresolved()) {
+ /*
+ * Usually socket addresses are resolved on creation. If the address
+ * is unresolved then there must be a user provided hostname instead
+ * and getHostName will not perform a reverse lookup.
+ */
+ return socketAddress.getHostName();
+ } else {
+ /*
+ * Simulate getHostString() by parsing the toString()
+ * representation. This assumes that the toString() representation
+ * is stable, which I assume it is because it is documented.
+ */
+ final InetAddress address = socketAddress.getAddress();
+ final String hostSlashIp = address.toString();
+ final int slashPos = hostSlashIp.indexOf('/');
+ if (slashPos == 0) {
+ return hostSlashIp.substring(1);
+ } else {
+ return hostSlashIp.substring(0, slashPos);
+ }
+ }
+ }
+
// Prevent instantiation.
private StaticUtils() {
// No implementation required.
diff --git a/opendj-sdk/opendj-ldap-sdk/src/main/java/org/forgerock/opendj/ldap/LDAPConnectionFactory.java b/opendj-sdk/opendj-ldap-sdk/src/main/java/org/forgerock/opendj/ldap/LDAPConnectionFactory.java
index 043e489..b6da837 100644
--- a/opendj-sdk/opendj-ldap-sdk/src/main/java/org/forgerock/opendj/ldap/LDAPConnectionFactory.java
+++ b/opendj-sdk/opendj-ldap-sdk/src/main/java/org/forgerock/opendj/ldap/LDAPConnectionFactory.java
@@ -22,16 +22,16 @@
*
*
* Copyright 2009-2010 Sun Microsystems, Inc.
- * Portions copyright 2011-2013 ForgeRock AS.
+ * Portions copyright 2011-2014 ForgeRock AS.
*/
package org.forgerock.opendj.ldap;
import java.net.InetAddress;
import java.net.InetSocketAddress;
-import java.net.SocketAddress;
import com.forgerock.opendj.ldap.LDAPConnectionFactoryImpl;
+import com.forgerock.opendj.util.StaticUtils;
import com.forgerock.opendj.util.Validator;
/**
@@ -54,7 +54,7 @@
* @throws NullPointerException
* If {@code address} was {@code null}.
*/
- public LDAPConnectionFactory(final SocketAddress address) {
+ public LDAPConnectionFactory(final InetSocketAddress address) {
this(address, new LDAPOptions());
}
@@ -69,7 +69,7 @@
* @throws NullPointerException
* If {@code address} or {@code options} was {@code null}.
*/
- public LDAPConnectionFactory(final SocketAddress address, final LDAPOptions options) {
+ public LDAPConnectionFactory(final InetSocketAddress address, final LDAPOptions options) {
Validator.ensureNotNull(address, options);
this.impl = new LDAPConnectionFactoryImpl(address, options);
}
@@ -106,7 +106,7 @@
*/
public LDAPConnectionFactory(final String host, final int port, final LDAPOptions options) {
Validator.ensureNotNull(host, options);
- final SocketAddress address = new InetSocketAddress(host, port);
+ final InetSocketAddress address = new InetSocketAddress(host, port);
this.impl = new LDAPConnectionFactoryImpl(address, options);
}
@@ -117,13 +117,7 @@
* or {@code null} if it is unknown.
*/
public InetAddress getAddress() {
- final SocketAddress socketAddress = getSocketAddress();
- if (socketAddress instanceof InetSocketAddress) {
- final InetSocketAddress inetSocketAddress = (InetSocketAddress) socketAddress;
- return inetSocketAddress.getAddress();
- } else {
- return null;
- }
+ return getSocketAddress().getAddress();
}
@Override
@@ -143,35 +137,24 @@
}
/**
- * Returns the host name that this LDAP listener is listening on.
+ * Returns the host name that this LDAP listener is listening on. The
+ * returned host name is the same host name that was provided during
+ * construction and may be an IP address. More specifically, this method
+ * will not perform a reverse DNS lookup.
*
- * @return The host name that this LDAP listener is listening on, or
- * {@code null} if it is unknown.
+ * @return The host name that this LDAP listener is listening on.
*/
- public String getHostname() {
- final SocketAddress socketAddress = getSocketAddress();
- if (socketAddress instanceof InetSocketAddress) {
- final InetSocketAddress inetSocketAddress = (InetSocketAddress) socketAddress;
- return inetSocketAddress.getHostName();
- } else {
- return null;
- }
+ public String getHostName() {
+ return StaticUtils.getHostName(getSocketAddress());
}
/**
* Returns the port that this LDAP listener is listening on.
*
- * @return The port that this LDAP listener is listening on, or {@code -1}
- * if it is unknown.
+ * @return The port that this LDAP listener is listening on.
*/
public int getPort() {
- final SocketAddress socketAddress = getSocketAddress();
- if (socketAddress instanceof InetSocketAddress) {
- final InetSocketAddress inetSocketAddress = (InetSocketAddress) socketAddress;
- return inetSocketAddress.getPort();
- } else {
- return -1;
- }
+ return getSocketAddress().getPort();
}
/**
@@ -179,7 +162,7 @@
*
* @return The address that this LDAP listener is listening on.
*/
- public SocketAddress getSocketAddress() {
+ public InetSocketAddress getSocketAddress() {
return impl.getSocketAddress();
}
diff --git a/opendj-sdk/opendj-ldap-sdk/src/main/java/org/forgerock/opendj/ldap/LDAPListener.java b/opendj-sdk/opendj-ldap-sdk/src/main/java/org/forgerock/opendj/ldap/LDAPListener.java
index 4aa7445..2113d16 100644
--- a/opendj-sdk/opendj-ldap-sdk/src/main/java/org/forgerock/opendj/ldap/LDAPListener.java
+++ b/opendj-sdk/opendj-ldap-sdk/src/main/java/org/forgerock/opendj/ldap/LDAPListener.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2009-2010 Sun Microsystems, Inc.
- * Portions copyright 2012 ForgeRock AS.
+ * Portions copyright 2012-2014 ForgeRock AS.
*/
package org.forgerock.opendj.ldap;
@@ -31,9 +31,9 @@
import java.io.IOException;
import java.net.InetAddress;
import java.net.InetSocketAddress;
-import java.net.SocketAddress;
import com.forgerock.opendj.ldap.LDAPListenerImpl;
+import com.forgerock.opendj.util.StaticUtils;
import com.forgerock.opendj.util.Validator;
/**
@@ -137,7 +137,7 @@
final ServerConnectionFactory<LDAPClientContext, Integer> factory,
final LDAPListenerOptions options) throws IOException {
Validator.ensureNotNull(factory, options);
- final SocketAddress address = new InetSocketAddress(port);
+ final InetSocketAddress address = new InetSocketAddress(port);
this.impl = new LDAPListenerImpl(address, factory, options);
}
@@ -156,7 +156,7 @@
* @throws NullPointerException
* If {@code address} or {code factory} was {@code null}.
*/
- public LDAPListener(final SocketAddress address,
+ public LDAPListener(final InetSocketAddress address,
final ServerConnectionFactory<LDAPClientContext, Integer> factory) throws IOException {
this(address, factory, new LDAPListenerOptions());
}
@@ -179,7 +179,7 @@
* If {@code address}, {code factory}, or {@code options} was
* {@code null}.
*/
- public LDAPListener(final SocketAddress address,
+ public LDAPListener(final InetSocketAddress address,
final ServerConnectionFactory<LDAPClientContext, Integer> factory,
final LDAPListenerOptions options) throws IOException {
Validator.ensureNotNull(address, factory, options);
@@ -232,7 +232,7 @@
final ServerConnectionFactory<LDAPClientContext, Integer> factory,
final LDAPListenerOptions options) throws IOException {
Validator.ensureNotNull(host, factory, options);
- final SocketAddress address = new InetSocketAddress(host, port);
+ final InetSocketAddress address = new InetSocketAddress(host, port);
this.impl = new LDAPListenerImpl(address, factory, options);
}
@@ -247,49 +247,31 @@
/**
* Returns the {@code InetAddress} that this LDAP listener is listening on.
*
- * @return The {@code InetAddress} that this LDAP listener is listening on,
- * or {@code null} if it is unknown.
+ * @return The {@code InetAddress} that this LDAP listener is listening on.
*/
public InetAddress getAddress() {
- final SocketAddress socketAddress = getSocketAddress();
- if (socketAddress instanceof InetSocketAddress) {
- final InetSocketAddress inetSocketAddress = (InetSocketAddress) socketAddress;
- return inetSocketAddress.getAddress();
- } else {
- return null;
- }
+ return getSocketAddress().getAddress();
}
/**
- * Returns the host name that this LDAP listener is listening on.
+ * Returns the host name that this LDAP listener is listening on. The
+ * returned host name is the same host name that was provided during
+ * construction and may be an IP address. More specifically, this method
+ * will not perform a reverse DNS lookup.
*
- * @return The host name that this LDAP listener is listening on, or
- * {@code null} if it is unknown.
+ * @return The host name that this LDAP listener is listening on.
*/
- public String getHostname() {
- final SocketAddress socketAddress = getSocketAddress();
- if (socketAddress instanceof InetSocketAddress) {
- final InetSocketAddress inetSocketAddress = (InetSocketAddress) socketAddress;
- return inetSocketAddress.getHostName();
- } else {
- return null;
- }
+ public String getHostName() {
+ return StaticUtils.getHostName(getSocketAddress());
}
/**
* Returns the port that this LDAP listener is listening on.
*
- * @return The port that this LDAP listener is listening on, or {@code -1}
- * if it is unknown.
+ * @return The port that this LDAP listener is listening on.
*/
public int getPort() {
- final SocketAddress socketAddress = getSocketAddress();
- if (socketAddress instanceof InetSocketAddress) {
- final InetSocketAddress inetSocketAddress = (InetSocketAddress) socketAddress;
- return inetSocketAddress.getPort();
- } else {
- return -1;
- }
+ return getSocketAddress().getPort();
}
/**
@@ -297,7 +279,7 @@
*
* @return The address that this LDAP listener is listening on.
*/
- public SocketAddress getSocketAddress() {
+ public InetSocketAddress getSocketAddress() {
return impl.getSocketAddress();
}
diff --git a/opendj-sdk/opendj-ldap-sdk/src/test/java/com/forgerock/opendj/ldap/LDAPConnectionTestCase.java b/opendj-sdk/opendj-ldap-sdk/src/test/java/com/forgerock/opendj/ldap/LDAPConnectionTestCase.java
index 5924e23..1c1d13a 100644
--- a/opendj-sdk/opendj-ldap-sdk/src/test/java/com/forgerock/opendj/ldap/LDAPConnectionTestCase.java
+++ b/opendj-sdk/opendj-ldap-sdk/src/test/java/com/forgerock/opendj/ldap/LDAPConnectionTestCase.java
@@ -21,7 +21,7 @@
* CDDL HEADER END
*
*
- * Copyright 2013 ForgeRock AS.
+ * Copyright 2013-2014 ForgeRock AS.
*/
package com.forgerock.opendj.ldap;
@@ -31,7 +31,7 @@
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.verifyZeroInteractions;
-import java.net.SocketAddress;
+import java.net.InetSocketAddress;
import java.util.concurrent.TimeUnit;
import org.forgerock.opendj.ldap.Connections;
@@ -75,7 +75,7 @@
}
private void doTestRequestTimeout(boolean isPersistentSearch) throws Exception {
- SocketAddress address = TestCaseUtils.findFreeSocketAddress();
+ InetSocketAddress address = TestCaseUtils.findFreeSocketAddress();
/*
* Use a mock server implementation which will ignore incoming requests
diff --git a/opendj-sdk/opendj-ldap-sdk/src/test/java/org/forgerock/opendj/ldap/LDAPServer.java b/opendj-sdk/opendj-ldap-sdk/src/test/java/org/forgerock/opendj/ldap/LDAPServer.java
index 8ec3cdb..ad66304 100644
--- a/opendj-sdk/opendj-ldap-sdk/src/test/java/org/forgerock/opendj/ldap/LDAPServer.java
+++ b/opendj-sdk/opendj-ldap-sdk/src/test/java/org/forgerock/opendj/ldap/LDAPServer.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2010 Sun Microsystems, Inc.
- * Portions copyright 2011-2013 ForgeRock AS
+ * Portions copyright 2011-2014 ForgeRock AS
*/
package org.forgerock.opendj.ldap;
@@ -30,7 +30,7 @@
import static com.forgerock.opendj.ldap.LDAPConstants.TYPE_AUTHENTICATION_SASL;
import java.io.IOException;
-import java.net.SocketAddress;
+import java.net.InetSocketAddress;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
@@ -225,8 +225,8 @@
final Map<String, String> props = new HashMap<String, String>();
props.put(Sasl.QOP, "auth-conf,auth-int,auth");
saslServer =
- Sasl.createSaslServer(saslMech, "ldap", clientContext
- .getLocalAddress().getHostName(), props,
+ Sasl.createSaslServer(saslMech, "ldap",
+ listener.getHostName(), props,
new CallbackHandler() {
public void handle(Callback[] callbacks)
throws IOException,
@@ -563,7 +563,7 @@
*
* @return The socket address of the server.
*/
- public synchronized SocketAddress getSocketAddress() {
+ public synchronized InetSocketAddress getSocketAddress() {
if (!isRunning) {
throw new IllegalStateException("Server is not running");
}
diff --git a/opendj-sdk/opendj-ldap-sdk/src/test/java/org/forgerock/opendj/ldap/TestCaseUtils.java b/opendj-sdk/opendj-ldap-sdk/src/test/java/org/forgerock/opendj/ldap/TestCaseUtils.java
index 2a8c3bd..e265f5d 100644
--- a/opendj-sdk/opendj-ldap-sdk/src/test/java/org/forgerock/opendj/ldap/TestCaseUtils.java
+++ b/opendj-sdk/opendj-ldap-sdk/src/test/java/org/forgerock/opendj/ldap/TestCaseUtils.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2009-2010 Sun Microsystems, Inc.
- * Portions copyright 2012-2013 ForgeRock AS.
+ * Portions copyright 2012-2014 ForgeRock AS.
*/
package org.forgerock.opendj.ldap;
@@ -80,14 +80,14 @@
*
* @return The free port.
*/
- public static SocketAddress findFreeSocketAddress() {
+ public static InetSocketAddress findFreeSocketAddress() {
try {
ServerSocket serverLdapSocket = new ServerSocket();
serverLdapSocket.setReuseAddress(true);
serverLdapSocket.bind(new InetSocketAddress("127.0.0.1", 0));
final SocketAddress address = serverLdapSocket.getLocalSocketAddress();
serverLdapSocket.close();
- return address;
+ return (InetSocketAddress) address;
} catch (IOException e) {
throw new RuntimeException(e);
}
@@ -129,7 +129,7 @@
*
* @return The socket address of the server.
*/
- public static SocketAddress getServerSocketAddress() {
+ public static InetSocketAddress getServerSocketAddress() {
return LDAPServer.getInstance().getSocketAddress();
}
--
Gitblit v1.10.0