mirror of
https://github.com/PaperMC/Waterfall.git
synced 2024-10-04 17:37:27 +02:00
3809083007
Allows us to easily see and manage the diff with upstream. Makes fixing conflicts with upstream easier and shows a cleaner, more acurate commit history. All credits to scripts go to @md_5 @aikar @Zbob750 @Thinkofname @Byteflux @Techcable (GPL3 Licensed)
48 lines
1.8 KiB
Diff
48 lines
1.8 KiB
Diff
From 851c2b19e31527f7b758f9c924290ad0c950849d Mon Sep 17 00:00:00 2001
|
|
From: Tux <write@imaginarycode.com>
|
|
Date: Sun, 20 Mar 2016 01:36:23 -0400
|
|
Subject: [PATCH] Better race condition check for disconnect()
|
|
|
|
|
|
diff --git a/proxy/src/main/java/net/md_5/bungee/connection/InitialHandler.java b/proxy/src/main/java/net/md_5/bungee/connection/InitialHandler.java
|
|
index 0b1be45..9ced50c 100644
|
|
--- a/proxy/src/main/java/net/md_5/bungee/connection/InitialHandler.java
|
|
+++ b/proxy/src/main/java/net/md_5/bungee/connection/InitialHandler.java
|
|
@@ -8,6 +8,7 @@ import java.net.URLEncoder;
|
|
import java.security.MessageDigest;
|
|
import java.util.List;
|
|
import java.util.UUID;
|
|
+import java.util.concurrent.atomic.AtomicBoolean;
|
|
import java.util.logging.Level;
|
|
import javax.crypto.SecretKey;
|
|
import com.google.gson.Gson;
|
|
@@ -96,12 +97,11 @@ public class InitialHandler extends PacketHandler implements PendingConnection
|
|
private boolean legacy;
|
|
@Getter
|
|
private String extraDataInHandshake = "";
|
|
- private boolean disconnecting;
|
|
+ private final AtomicBoolean disconnecting = new AtomicBoolean(false);
|
|
|
|
- @Override
|
|
public boolean shouldHandle(PacketWrapper packet) throws Exception
|
|
{
|
|
- return !disconnecting;
|
|
+ return !disconnecting.get();
|
|
}
|
|
|
|
private enum State
|
|
@@ -532,9 +532,8 @@ public class InitialHandler extends PacketHandler implements PendingConnection
|
|
@Override
|
|
public void disconnect(final BaseComponent... reason)
|
|
{
|
|
- if ( !disconnecting || !ch.isClosed() )
|
|
+ if ( disconnecting.compareAndSet(false, true) || !ch.isClosed() )
|
|
{
|
|
- disconnecting = true;
|
|
if ( thisState != State.STATUS && thisState != State.PING ) {
|
|
ch.close( new Kick( ComponentSerializer.toString( reason ) ) );
|
|
} else {
|
|
--
|
|
2.8.3
|
|
|