mirror of
https://github.com/Minestom/Minestom.git
synced 2025-02-01 13:01:32 +01:00
Do not write packet after disconnection
Signed-off-by: TheMode <themode@outlook.fr>
This commit is contained in:
parent
89244fa35a
commit
20dcf91f4a
@ -203,11 +203,8 @@ public class PlayerSocketConnection extends PlayerConnection {
|
|||||||
super.disconnect();
|
super.disconnect();
|
||||||
this.workerQueue.relaxedOffer(() -> {
|
this.workerQueue.relaxedOffer(() -> {
|
||||||
this.worker.disconnect(this, channel);
|
this.worker.disconnect(this, channel);
|
||||||
final BinaryBuffer tick = tickBuffer.get();
|
final BinaryBuffer tick = tickBuffer.getAndSet(null);
|
||||||
if (tick != null) {
|
if (tick != null) POOL.add(tick);
|
||||||
POOL.add(tick);
|
|
||||||
this.tickBuffer.set(null);
|
|
||||||
}
|
|
||||||
for (BinaryBuffer buffer : waitingBuffers) POOL.add(buffer);
|
for (BinaryBuffer buffer : waitingBuffers) POOL.add(buffer);
|
||||||
this.waitingBuffers.clear();
|
this.waitingBuffers.clear();
|
||||||
});
|
});
|
||||||
@ -405,6 +402,8 @@ public class PlayerSocketConnection extends PlayerConnection {
|
|||||||
|
|
||||||
private void writeBufferSync0(@NotNull ByteBuffer buffer, int index, int length) {
|
private void writeBufferSync0(@NotNull ByteBuffer buffer, int index, int length) {
|
||||||
BinaryBuffer localBuffer = tickBuffer.getPlain();
|
BinaryBuffer localBuffer = tickBuffer.getPlain();
|
||||||
|
if (localBuffer == null)
|
||||||
|
return; // Socket is closed
|
||||||
final int capacity = localBuffer.capacity();
|
final int capacity = localBuffer.capacity();
|
||||||
if (length <= capacity) {
|
if (length <= capacity) {
|
||||||
if (!localBuffer.canWrite(length)) localBuffer = updateLocalBuffer();
|
if (!localBuffer.canWrite(length)) localBuffer = updateLocalBuffer();
|
||||||
@ -425,7 +424,10 @@ public class PlayerSocketConnection extends PlayerConnection {
|
|||||||
final List<BinaryBuffer> waitingBuffers = this.waitingBuffers;
|
final List<BinaryBuffer> waitingBuffers = this.waitingBuffers;
|
||||||
if (!channel.isConnected()) throw new ClosedChannelException();
|
if (!channel.isConnected()) throw new ClosedChannelException();
|
||||||
if (waitingBuffers.isEmpty()) {
|
if (waitingBuffers.isEmpty()) {
|
||||||
tickBuffer.getPlain().writeChannel(channel);
|
BinaryBuffer localBuffer = tickBuffer.getPlain();
|
||||||
|
if (localBuffer == null)
|
||||||
|
return; // Socket is closed
|
||||||
|
localBuffer.writeChannel(channel);
|
||||||
} else {
|
} else {
|
||||||
// Write as much as possible from the waiting list
|
// Write as much as possible from the waiting list
|
||||||
Iterator<BinaryBuffer> iterator = waitingBuffers.iterator();
|
Iterator<BinaryBuffer> iterator = waitingBuffers.iterator();
|
||||||
|
Loading…
Reference in New Issue
Block a user