Skip to content

Commit 151d4a2

Browse files
authored
Prevent memory leaks with loads of PacketMarker objects (#1511)
closes #1509
1 parent 1b4d79b commit 151d4a2

File tree

1 file changed

+6
-2
lines changed

1 file changed

+6
-2
lines changed

src/main/java/com/comphenix/protocol/injector/netty/ChannelInjector.java

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -275,7 +275,7 @@ protected void encode(ChannelHandlerContext ctx, Object packet, ByteBuf output)
275275
@Override
276276
public void write(ChannelHandlerContext ctx, Object packet, ChannelPromise promise) throws Exception {
277277
super.write(ctx, packet, promise);
278-
ChannelInjector.this.finalWrite();
278+
ChannelInjector.this.finalWrite(packet);
279279
}
280280

281281
@Override
@@ -544,7 +544,7 @@ private void encode(ChannelHandlerContext ctx, Object packet, ByteBuf output) th
544544
/**
545545
* Invoked when a packet has been written to the channel
546546
*/
547-
private void finalWrite() {
547+
private void finalWrite(Object packet) {
548548
PacketEvent event = finalEvent;
549549

550550
if (event != null) {
@@ -553,6 +553,10 @@ private void finalWrite() {
553553
currentEvent = null;
554554

555555
processor.invokePostEvent(event, NetworkMarker.getNetworkMarker(event));
556+
557+
// remove the stored packet markers to prevent memory leaks
558+
// See: https://github.com/dmulloy2/ProtocolLib/issues/1509
559+
packetMarker.remove(packet);
556560
}
557561
}
558562

0 commit comments

Comments
 (0)