Fix buffer leak in DefaultFullBinaryMemcacheRequest/Response
Motivation: DefaultFullBinaryMemcacheRequest/Response overrides release(), retain(), and touch() methods without calling its super, resulting in a leak of the extras. Modifications: When overriding release(), retain(), and touch(), ensure to call super. Result: Fixes #2533 by fixing the buffer leak
This commit is contained in:
parent
f9021a6061
commit
3c21b1cc43
@ -65,45 +65,59 @@ public class DefaultFullBinaryMemcacheRequest extends DefaultBinaryMemcacheReque
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public FullBinaryMemcacheRequest retain() {
|
public FullBinaryMemcacheRequest retain() {
|
||||||
|
super.retain();
|
||||||
content.retain();
|
content.retain();
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public FullBinaryMemcacheRequest retain(int increment) {
|
public FullBinaryMemcacheRequest retain(int increment) {
|
||||||
|
super.retain(increment);
|
||||||
content.retain(increment);
|
content.retain(increment);
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public FullBinaryMemcacheRequest touch() {
|
public FullBinaryMemcacheRequest touch() {
|
||||||
|
super.touch();
|
||||||
content.touch();
|
content.touch();
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public FullBinaryMemcacheRequest touch(Object hint) {
|
public FullBinaryMemcacheRequest touch(Object hint) {
|
||||||
|
super.touch(hint);
|
||||||
content.touch(hint);
|
content.touch(hint);
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean release() {
|
public boolean release() {
|
||||||
|
super.release();
|
||||||
return content.release();
|
return content.release();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean release(int decrement) {
|
public boolean release(int decrement) {
|
||||||
|
super.release(decrement);
|
||||||
return content.release(decrement);
|
return content.release(decrement);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public FullBinaryMemcacheRequest copy() {
|
public FullBinaryMemcacheRequest copy() {
|
||||||
return new DefaultFullBinaryMemcacheRequest(getKey(), getExtras(), content().copy());
|
ByteBuf extras = getExtras();
|
||||||
|
if (extras != null) {
|
||||||
|
extras = extras.copy();
|
||||||
|
}
|
||||||
|
return new DefaultFullBinaryMemcacheRequest(getKey(), extras, content().copy());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public FullBinaryMemcacheRequest duplicate() {
|
public FullBinaryMemcacheRequest duplicate() {
|
||||||
return new DefaultFullBinaryMemcacheRequest(getKey(), getExtras(), content().duplicate());
|
ByteBuf extras = getExtras();
|
||||||
|
if (extras != null) {
|
||||||
|
extras = extras.duplicate();
|
||||||
|
}
|
||||||
|
return new DefaultFullBinaryMemcacheRequest(getKey(), extras, content().duplicate());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -65,45 +65,59 @@ public class DefaultFullBinaryMemcacheResponse extends DefaultBinaryMemcacheResp
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public FullBinaryMemcacheResponse retain() {
|
public FullBinaryMemcacheResponse retain() {
|
||||||
|
super.retain();
|
||||||
content.retain();
|
content.retain();
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public FullBinaryMemcacheResponse retain(int increment) {
|
public FullBinaryMemcacheResponse retain(int increment) {
|
||||||
|
super.retain(increment);
|
||||||
content.retain(increment);
|
content.retain(increment);
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public FullBinaryMemcacheResponse touch() {
|
public FullBinaryMemcacheResponse touch() {
|
||||||
|
super.touch();
|
||||||
content.touch();
|
content.touch();
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public FullBinaryMemcacheResponse touch(Object hint) {
|
public FullBinaryMemcacheResponse touch(Object hint) {
|
||||||
|
super.touch(hint);
|
||||||
content.touch(hint);
|
content.touch(hint);
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean release() {
|
public boolean release() {
|
||||||
|
super.release();
|
||||||
return content.release();
|
return content.release();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean release(int decrement) {
|
public boolean release(int decrement) {
|
||||||
|
super.release(decrement);
|
||||||
return content.release(decrement);
|
return content.release(decrement);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public FullBinaryMemcacheResponse copy() {
|
public FullBinaryMemcacheResponse copy() {
|
||||||
return new DefaultFullBinaryMemcacheResponse(getKey(), getExtras(), content().copy());
|
ByteBuf extras = getExtras();
|
||||||
|
if (extras != null) {
|
||||||
|
extras = extras.copy();
|
||||||
|
}
|
||||||
|
return new DefaultFullBinaryMemcacheResponse(getKey(), extras, content().copy());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public FullBinaryMemcacheResponse duplicate() {
|
public FullBinaryMemcacheResponse duplicate() {
|
||||||
return new DefaultFullBinaryMemcacheResponse(getKey(), getExtras(), content().duplicate());
|
ByteBuf extras = getExtras();
|
||||||
|
if (extras != null) {
|
||||||
|
extras = extras.duplicate();
|
||||||
|
}
|
||||||
|
return new DefaultFullBinaryMemcacheResponse(getKey(), extras, content().duplicate());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user