You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hc.apache.org by ol...@apache.org on 2007/03/04 14:37:52 UTC
svn commit: r514398 - in /jakarta/httpcomponents/httpcore/trunk:
RELEASE_NOTES.txt
module-nio/src/main/java/org/apache/http/impl/nio/reactor/DefaultConnectingIOReactor.java
Author: olegk
Date: Sun Mar 4 05:37:50 2007
New Revision: 514398
URL: http://svn.apache.org/viewvc?view=rev&rev=514398
Log:
HTTPCORE-49:
* DefaultConnectingIOReactor can now correctly handle unresolved socket addresses. It no longer terminates with the UnresolvedAddressException runtime exception.
Modified:
jakarta/httpcomponents/httpcore/trunk/RELEASE_NOTES.txt
jakarta/httpcomponents/httpcore/trunk/module-nio/src/main/java/org/apache/http/impl/nio/reactor/DefaultConnectingIOReactor.java
Modified: jakarta/httpcomponents/httpcore/trunk/RELEASE_NOTES.txt
URL: http://svn.apache.org/viewvc/jakarta/httpcomponents/httpcore/trunk/RELEASE_NOTES.txt?view=diff&rev=514398&r1=514397&r2=514398
==============================================================================
--- jakarta/httpcomponents/httpcore/trunk/RELEASE_NOTES.txt (original)
+++ jakarta/httpcomponents/httpcore/trunk/RELEASE_NOTES.txt Sun Mar 4 05:37:50 2007
@@ -1,6 +1,11 @@
Changes since release 4.0 Alpha 3
-------------------
+* [HTTPCORE-49]: DefaultConnectingIOReactor can now correctly handle
+ unresolved socket addresses. It no longer terminates with the
+ UnresolvedAddressException runtime exception.
+ Contributed by Oleg Kalnichevski <olegk at apache.org>
+
* [HTTPCORE-42]: Added server side API for the expectation verification.
Improved support for the 'expect: continue' handshake in HttpCore and
HttpCore NIO.
Modified: jakarta/httpcomponents/httpcore/trunk/module-nio/src/main/java/org/apache/http/impl/nio/reactor/DefaultConnectingIOReactor.java
URL: http://svn.apache.org/viewvc/jakarta/httpcomponents/httpcore/trunk/module-nio/src/main/java/org/apache/http/impl/nio/reactor/DefaultConnectingIOReactor.java?view=diff&rev=514398&r1=514397&r2=514398
==============================================================================
--- jakarta/httpcomponents/httpcore/trunk/module-nio/src/main/java/org/apache/http/impl/nio/reactor/DefaultConnectingIOReactor.java (original)
+++ jakarta/httpcomponents/httpcore/trunk/module-nio/src/main/java/org/apache/http/impl/nio/reactor/DefaultConnectingIOReactor.java Sun Mar 4 05:37:50 2007
@@ -33,8 +33,10 @@
import java.io.IOException;
import java.io.InterruptedIOException;
+import java.net.InetSocketAddress;
import java.net.Socket;
import java.net.SocketAddress;
+import java.net.UnknownHostException;
import java.nio.channels.CancelledKeyException;
import java.nio.channels.SelectionKey;
import java.nio.channels.Selector;
@@ -213,6 +215,18 @@
return sessionRequest;
}
+ private void validateAddress(final SocketAddress address) throws UnknownHostException {
+ if (address == null) {
+ return;
+ }
+ if (address instanceof InetSocketAddress) {
+ InetSocketAddress endpoint = (InetSocketAddress) address;
+ if (endpoint.isUnresolved()) {
+ throw new UnknownHostException(endpoint.getHostName());
+ }
+ }
+ }
+
private void processSessionRequests() throws IOReactorException {
SessionRequestImpl request;
while ((request = this.requestQueue.pop()) != null) {
@@ -227,12 +241,16 @@
throw new IOReactorException("Failure opening socket", ex);
}
try {
+ validateAddress(request.getLocalAddress());
+ validateAddress(request.getRemoteAddress());
+
if (request.getLocalAddress() != null) {
socketChannel.socket().bind(request.getLocalAddress());
}
socketChannel.connect(request.getRemoteAddress());
} catch (IOException ex) {
request.failed(ex);
+ return;
}
SelectionKey key;