Fixed handling of IPv6 destinations.

This commit is contained in:
Simone Bordet 2012-12-12 14:54:58 +01:00
parent 8d0c90eef9
commit 5f17509a18
2 changed files with 19 additions and 1 deletions

View File

@ -55,6 +55,7 @@ public class HttpDestination implements Destination, AutoCloseable, Dumpable
private final AtomicInteger connectionCount = new AtomicInteger(); private final AtomicInteger connectionCount = new AtomicInteger();
private final HttpClient client; private final HttpClient client;
private final String scheme; private final String scheme;
private final String host;
private final InetSocketAddress address; private final InetSocketAddress address;
private final Queue<RequestContext> requests; private final Queue<RequestContext> requests;
private final BlockingQueue<Connection> idleConnections; private final BlockingQueue<Connection> idleConnections;
@ -67,6 +68,7 @@ public class HttpDestination implements Destination, AutoCloseable, Dumpable
{ {
this.client = client; this.client = client;
this.scheme = scheme; this.scheme = scheme;
this.host = host;
this.address = new InetSocketAddress(host, port); this.address = new InetSocketAddress(host, port);
this.requests = new ArrayBlockingQueue<>(client.getMaxRequestsQueuedPerDestination()); this.requests = new ArrayBlockingQueue<>(client.getMaxRequestsQueuedPerDestination());
this.idleConnections = new ArrayBlockingQueue<>(client.getMaxConnectionsPerDestination()); this.idleConnections = new ArrayBlockingQueue<>(client.getMaxConnectionsPerDestination());
@ -98,7 +100,9 @@ public class HttpDestination implements Destination, AutoCloseable, Dumpable
@Override @Override
public String getHost() public String getHost()
{ {
return address.getHostString(); // InetSocketAddress.getHostString() transforms the host string
// in case of IPv6 addresses, so we return the original host string
return host;
} }
@Override @Override

View File

@ -624,4 +624,18 @@ public class HttpClientTest extends AbstractHttpClientServerTest
Assert.assertNotNull(response); Assert.assertNotNull(response);
Assert.assertEquals(200, response.getStatus()); Assert.assertEquals(200, response.getStatus());
} }
@Test
public void testSendToIPv6Address() throws Exception
{
start(new EmptyServerHandler());
ContentResponse response = client.newRequest("[::1]", connector.getLocalPort())
.scheme(scheme)
.send()
.get(5, TimeUnit.SECONDS);
Assert.assertNotNull(response);
Assert.assertEquals(200, response.getStatus());
}
} }