diff --git a/modules/elasticsearch/src/main/java/org/elasticsearch/common/http/client/HttpDownloadHelper.java b/modules/elasticsearch/src/main/java/org/elasticsearch/common/http/client/HttpDownloadHelper.java index 6940fc430e1..45d9f926f7d 100644 --- a/modules/elasticsearch/src/main/java/org/elasticsearch/common/http/client/HttpDownloadHelper.java +++ b/modules/elasticsearch/src/main/java/org/elasticsearch/common/http/client/HttpDownloadHelper.java @@ -258,6 +258,7 @@ public class HttpDownloadHelper { if (connection instanceof HttpURLConnection) { ((HttpURLConnection) connection).setInstanceFollowRedirects(false); ((HttpURLConnection) connection).setUseCaches(true); + ((HttpURLConnection) connection).setConnectTimeout(5000); } // connect to the remote site (may take some time) connection.connect(); diff --git a/modules/elasticsearch/src/main/java/org/elasticsearch/http/netty/HttpRequestHandler.java b/modules/elasticsearch/src/main/java/org/elasticsearch/http/netty/HttpRequestHandler.java index c96fbbd4f05..c36a967a976 100644 --- a/modules/elasticsearch/src/main/java/org/elasticsearch/http/netty/HttpRequestHandler.java +++ b/modules/elasticsearch/src/main/java/org/elasticsearch/http/netty/HttpRequestHandler.java @@ -19,7 +19,11 @@ package org.elasticsearch.http.netty; -import org.elasticsearch.common.netty.channel.*; +import org.elasticsearch.common.netty.channel.ChannelHandler; +import org.elasticsearch.common.netty.channel.ChannelHandlerContext; +import org.elasticsearch.common.netty.channel.ExceptionEvent; +import org.elasticsearch.common.netty.channel.MessageEvent; +import org.elasticsearch.common.netty.channel.SimpleChannelUpstreamHandler; import org.elasticsearch.common.netty.handler.codec.http.HttpRequest; @@ -37,7 +41,7 @@ public class HttpRequestHandler extends SimpleChannelUpstreamHandler { @Override public void messageReceived(ChannelHandlerContext ctx, MessageEvent e) throws Exception { HttpRequest request = (HttpRequest) e.getMessage(); - serverTransport.dispatchRequest(new NettyHttpRequest(request), new NettyHttpChannel(e.getChannel(), request)); + serverTransport.dispatchRequest(new NettyHttpRequest(request), new NettyHttpChannel(serverTransport, e.getChannel(), request)); super.messageReceived(ctx, e); } diff --git a/modules/elasticsearch/src/main/java/org/elasticsearch/http/netty/NettyHttpChannel.java b/modules/elasticsearch/src/main/java/org/elasticsearch/http/netty/NettyHttpChannel.java index 36db4aedd9d..f2d35a37ebe 100644 --- a/modules/elasticsearch/src/main/java/org/elasticsearch/http/netty/NettyHttpChannel.java +++ b/modules/elasticsearch/src/main/java/org/elasticsearch/http/netty/NettyHttpChannel.java @@ -48,10 +48,12 @@ import java.util.Set; * @author kimchy (shay.banon) */ public class NettyHttpChannel implements HttpChannel { + private final NettyHttpServerTransport transport; private final Channel channel; private final org.elasticsearch.common.netty.handler.codec.http.HttpRequest request; - public NettyHttpChannel(Channel channel, org.elasticsearch.common.netty.handler.codec.http.HttpRequest request) { + public NettyHttpChannel(NettyHttpServerTransport transport, Channel channel, org.elasticsearch.common.netty.handler.codec.http.HttpRequest request) { + this.transport = transport; this.channel = channel; this.request = request; } @@ -126,17 +128,19 @@ public class NettyHttpChannel implements HttpChannel { resp.setHeader(HttpHeaders.Names.CONTENT_LENGTH, String.valueOf(buf.readableBytes())); - String cookieString = request.getHeader(HttpHeaders.Names.COOKIE); - if (cookieString != null) { - CookieDecoder cookieDecoder = new CookieDecoder(); - Set cookies = cookieDecoder.decode(cookieString); - if (!cookies.isEmpty()) { - // Reset the cookies if necessary. - CookieEncoder cookieEncoder = new CookieEncoder(true); - for (Cookie cookie : cookies) { - cookieEncoder.addCookie(cookie); + if (transport.resetCookies) { + String cookieString = request.getHeader(HttpHeaders.Names.COOKIE); + if (cookieString != null) { + CookieDecoder cookieDecoder = new CookieDecoder(); + Set cookies = cookieDecoder.decode(cookieString); + if (!cookies.isEmpty()) { + // Reset the cookies if necessary. + CookieEncoder cookieEncoder = new CookieEncoder(true); + for (Cookie cookie : cookies) { + cookieEncoder.addCookie(cookie); + } + resp.addHeader(HttpHeaders.Names.SET_COOKIE, cookieEncoder.encode()); } - resp.addHeader(HttpHeaders.Names.SET_COOKIE, cookieEncoder.encode()); } } diff --git a/modules/elasticsearch/src/main/java/org/elasticsearch/http/netty/NettyHttpServerTransport.java b/modules/elasticsearch/src/main/java/org/elasticsearch/http/netty/NettyHttpServerTransport.java index 45f05e7be1a..81c5e1310ac 100644 --- a/modules/elasticsearch/src/main/java/org/elasticsearch/http/netty/NettyHttpServerTransport.java +++ b/modules/elasticsearch/src/main/java/org/elasticsearch/http/netty/NettyHttpServerTransport.java @@ -95,6 +95,8 @@ public class NettyHttpServerTransport extends AbstractLifecycleComponent