HttpPostRequestEncoder may return a slice which is not retained.
Motivation: We miss to retain a slice before return it to the user and so an reference count error may accour later on. Modifications: Use readRetainedSlice(...) and so ensure we retain the buffer before hand it of to the user. Result: Fixes [#6626].
This commit is contained in:
parent
1b0b8f80cd
commit
fb113dce3a
@ -894,9 +894,7 @@ public class HttpPostRequestEncoder implements ChunkedInput<HttpContent> {
|
|||||||
private ByteBuf fillByteBuf() {
|
private ByteBuf fillByteBuf() {
|
||||||
int length = currentBuffer.readableBytes();
|
int length = currentBuffer.readableBytes();
|
||||||
if (length > HttpPostBodyUtil.chunkSize) {
|
if (length > HttpPostBodyUtil.chunkSize) {
|
||||||
ByteBuf slice = currentBuffer.slice(currentBuffer.readerIndex(), HttpPostBodyUtil.chunkSize);
|
return currentBuffer.readRetainedSlice(HttpPostBodyUtil.chunkSize);
|
||||||
currentBuffer.skipBytes(HttpPostBodyUtil.chunkSize);
|
|
||||||
return slice;
|
|
||||||
} else {
|
} else {
|
||||||
// to continue
|
// to continue
|
||||||
ByteBuf slice = currentBuffer;
|
ByteBuf slice = currentBuffer;
|
||||||
|
Loading…
Reference in New Issue
Block a user