diff options
author | Jesse McConnell | 2012-06-21 15:50:06 +0000 |
---|---|---|
committer | Jesse McConnell | 2012-06-21 15:50:06 +0000 |
commit | 9b2d7bb9bf6c052fa80169f91bfd1d9e1b6f9343 (patch) | |
tree | 461d3b3e052031242d1128575beceacbe57b6bf1 /jetty-server/src/main/java/org/eclipse/jetty/server/handler/ConnectHandler.java | |
parent | d40dc43e36dbd4a3c6de514d37a335ef3f219208 (diff) | |
download | org.eclipse.jetty.project-9b2d7bb9bf6c052fa80169f91bfd1d9e1b6f9343.tar.gz org.eclipse.jetty.project-9b2d7bb9bf6c052fa80169f91bfd1d9e1b6f9343.tar.xz org.eclipse.jetty.project-9b2d7bb9bf6c052fa80169f91bfd1d9e1b6f9343.zip |
[Bug 383251] resolve npe and return 500 when remote server is unaccessible
Diffstat (limited to 'jetty-server/src/main/java/org/eclipse/jetty/server/handler/ConnectHandler.java')
-rw-r--r-- | jetty-server/src/main/java/org/eclipse/jetty/server/handler/ConnectHandler.java | 21 |
1 files changed, 20 insertions, 1 deletions
diff --git a/jetty-server/src/main/java/org/eclipse/jetty/server/handler/ConnectHandler.java b/jetty-server/src/main/java/org/eclipse/jetty/server/handler/ConnectHandler.java index cef2c5cc97..9fef840cf9 100644 --- a/jetty-server/src/main/java/org/eclipse/jetty/server/handler/ConnectHandler.java +++ b/jetty-server/src/main/java/org/eclipse/jetty/server/handler/ConnectHandler.java @@ -223,8 +223,21 @@ public class ConnectHandler extends HandlerWrapper return; } - SocketChannel channel = connectToServer(request, host, port); + SocketChannel channel; + try + { + channel = connectToServer(request, host, port); + } + catch ( IOException ioe ) + { + LOG.info("ConnectHandler: " + ioe.getMessage()); + response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR); + baseRequest.setHandled(true); + return; + } + + // Transfer unread data from old connection to new connection // We need to copy the data to avoid races: // 1. when this unread data is written and the server replies before the clientToProxy @@ -304,9 +317,15 @@ public class ConnectHandler extends HandlerWrapper return new ProxyToServerConnection(context, buffer); } + // may return null private SocketChannel connectToServer(HttpServletRequest request, String host, int port) throws IOException { SocketChannel channel = connect(request, host, port); + if ( channel == null ) + { + throw new IOException("unable to connector to " + host + ":" + port); + } + channel.configureBlocking(false); return channel; } |