diff --git a/betamax-netty/src/main/java/co/freeside/betamax/proxy/netty/ProxyConnectHandler.java b/betamax-netty/src/main/java/co/freeside/betamax/proxy/netty/ProxyConnectHandler.java index 44fa4fde..5d3c58f3 100644 --- a/betamax-netty/src/main/java/co/freeside/betamax/proxy/netty/ProxyConnectHandler.java +++ b/betamax-netty/src/main/java/co/freeside/betamax/proxy/netty/ProxyConnectHandler.java @@ -5,6 +5,8 @@ import io.netty.channel.*; import io.netty.channel.socket.nio.*; import io.netty.handler.codec.http.*; +import static io.netty.handler.codec.http.HttpHeaders.Names.CONNECTION; +import static io.netty.handler.codec.http.HttpHeaders.Values.KEEP_ALIVE; import static io.netty.handler.codec.http.HttpMethod.*; public class ProxyConnectHandler extends SimpleChannelInboundHandler { @@ -27,8 +29,8 @@ protected void channelRead0(final ChannelHandlerContext context, final HttpReque CallbackNotifier callback = new CallbackNotifier() { @Override public void onSuccess(final ChannelHandlerContext outboundContext) { - HttpResponse response = new DefaultHttpResponse(HttpVersion.HTTP_1_1, HttpResponseStatus.OK); - context.channel().writeAndFlush(response) + context.channel() + .writeAndFlush(createConnectResponse()) .addListener(new ChannelFutureListener() { @Override public void operationComplete(ChannelFuture channelFuture) { @@ -56,6 +58,13 @@ public void onFailure(ChannelHandlerContext outboundCtx, Throwable cause) { bootstrap.connect(proxyAddress); } + private HttpResponse createConnectResponse() { + DefaultHttpResponse response = new DefaultHttpResponse(HttpVersion.HTTP_1_1, HttpResponseStatus.OK); + response.headers().add(CONNECTION, KEEP_ALIVE); + response.headers().add("Proxy-Connection", KEEP_ALIVE); + return response; + } + private boolean isConnectRequest(HttpRequest request) { return CONNECT.equals(request.getMethod()); }