Correctly handle chunked requests/responses. See #256
This commit is contained in:
parent
b9c60bd518
commit
5ed04c3ada
@ -99,13 +99,15 @@ public class HttpClientCodec implements ChannelUpstreamHandler,
|
|||||||
if (!done) {
|
if (!done) {
|
||||||
queue.offer(((HttpRequest) msg).getMethod());
|
queue.offer(((HttpRequest) msg).getMethod());
|
||||||
}
|
}
|
||||||
requestResponseCounter.incrementAndGet();
|
|
||||||
} else if (msg instanceof HttpChunk) {
|
|
||||||
|
|
||||||
// increment only if its the last chunk
|
// check if the request is chunked if so do not increment
|
||||||
if (((HttpChunk) msg).isLast()) {
|
if (!((HttpRequest) msg).isChunked()) {
|
||||||
requestResponseCounter.incrementAndGet();
|
requestResponseCounter.incrementAndGet();
|
||||||
}
|
}
|
||||||
|
} else if (msg instanceof HttpChunk && ((HttpChunk) msg).isLast()) {
|
||||||
|
// increment as its the last chunk
|
||||||
|
requestResponseCounter.incrementAndGet();
|
||||||
|
|
||||||
}
|
}
|
||||||
return super.encode(ctx, channel, msg);
|
return super.encode(ctx, channel, msg);
|
||||||
}
|
}
|
||||||
@ -126,7 +128,8 @@ public class HttpClientCodec implements ChannelUpstreamHandler,
|
|||||||
Object msg = super.decode(ctx, channel, buffer, state);
|
Object msg = super.decode(ctx, channel, buffer, state);
|
||||||
|
|
||||||
if (msg != null) {
|
if (msg != null) {
|
||||||
if (msg instanceof HttpMessage) {
|
// check if its a HttpMessage and its not chunked
|
||||||
|
if (msg instanceof HttpMessage && !((HttpMessage) msg).isChunked()) {
|
||||||
requestResponseCounter.decrementAndGet();
|
requestResponseCounter.decrementAndGet();
|
||||||
} else if (msg instanceof HttpChunk && ((HttpChunk) msg).isLast()) {
|
} else if (msg instanceof HttpChunk && ((HttpChunk) msg).isLast()) {
|
||||||
requestResponseCounter.decrementAndGet();
|
requestResponseCounter.decrementAndGet();
|
||||||
|
Loading…
Reference in New Issue
Block a user