* Use HttpRequest.isKeepAlive() instead of long conditionals
* Use HttpChunkAggregator because we don't want to complicate the example
This commit is contained in:
parent
f926c0adc0
commit
9f8fa65a14
@ -56,11 +56,6 @@ public class HttpStaticFileServerHandler extends SimpleChannelUpstreamHandler {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (request.isChunked()) {
|
|
||||||
sendError(ctx, HttpResponseStatus.BAD_REQUEST);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
String path = sanitizeUri(request.getUri());
|
String path = sanitizeUri(request.getUri());
|
||||||
if (path == null) {
|
if (path == null) {
|
||||||
sendError(ctx, HttpResponseStatus.FORBIDDEN);
|
sendError(ctx, HttpResponseStatus.FORBIDDEN);
|
||||||
@ -100,11 +95,7 @@ public class HttpStaticFileServerHandler extends SimpleChannelUpstreamHandler {
|
|||||||
ChannelFuture writeFuture = ch.write(new ChunkedFile(raf, 0, fileLength, 8192));
|
ChannelFuture writeFuture = ch.write(new ChunkedFile(raf, 0, fileLength, 8192));
|
||||||
|
|
||||||
// Decide whether to close the connection or not.
|
// Decide whether to close the connection or not.
|
||||||
boolean close =
|
boolean close = !request.isKeepAlive();
|
||||||
HttpHeaders.Values.CLOSE.equalsIgnoreCase(request.getHeader(HttpHeaders.Names.CONNECTION)) ||
|
|
||||||
request.getProtocolVersion().equals(HttpVersion.HTTP_1_0) &&
|
|
||||||
!HttpHeaders.Values.KEEP_ALIVE.equalsIgnoreCase(request.getHeader(HttpHeaders.Names.CONNECTION));
|
|
||||||
|
|
||||||
if (close) {
|
if (close) {
|
||||||
// Close the connection when the whole content is written out.
|
// Close the connection when the whole content is written out.
|
||||||
writeFuture.addListener(ChannelFutureListener.CLOSE);
|
writeFuture.addListener(ChannelFutureListener.CLOSE);
|
||||||
|
@ -19,6 +19,7 @@ import static org.jboss.netty.channel.Channels.*;
|
|||||||
|
|
||||||
import org.jboss.netty.channel.ChannelPipeline;
|
import org.jboss.netty.channel.ChannelPipeline;
|
||||||
import org.jboss.netty.channel.ChannelPipelineFactory;
|
import org.jboss.netty.channel.ChannelPipelineFactory;
|
||||||
|
import org.jboss.netty.handler.codec.http.HttpChunkAggregator;
|
||||||
import org.jboss.netty.handler.codec.http.HttpRequestDecoder;
|
import org.jboss.netty.handler.codec.http.HttpRequestDecoder;
|
||||||
import org.jboss.netty.handler.codec.http.HttpResponseEncoder;
|
import org.jboss.netty.handler.codec.http.HttpResponseEncoder;
|
||||||
import org.jboss.netty.handler.stream.ChunkedWriteHandler;
|
import org.jboss.netty.handler.stream.ChunkedWriteHandler;
|
||||||
@ -38,6 +39,7 @@ public class HttpStaticFileServerPipelineFactory implements ChannelPipelineFacto
|
|||||||
//pipeline.addLast("ssl", new SslHandler(engine));
|
//pipeline.addLast("ssl", new SslHandler(engine));
|
||||||
|
|
||||||
pipeline.addLast("decoder", new HttpRequestDecoder());
|
pipeline.addLast("decoder", new HttpRequestDecoder());
|
||||||
|
pipeline.addLast("aggregator", new HttpChunkAggregator(65536));
|
||||||
pipeline.addLast("encoder", new HttpResponseEncoder());
|
pipeline.addLast("encoder", new HttpResponseEncoder());
|
||||||
pipeline.addLast("chunkedWriter", new ChunkedWriteHandler());
|
pipeline.addLast("chunkedWriter", new ChunkedWriteHandler());
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user