Forgot to release a semaphore lock.
Dieser Commit ist enthalten in:
Ursprung
e666d17dc2
Commit
73005e032b
@ -97,7 +97,8 @@ class PacketProcessingQueue extends AbstractConcurrentListenerMultimap<AsyncList
|
|||||||
signalProcessingDone();
|
signalProcessingDone();
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
// No more queued packets.
|
// No more queued packets.
|
||||||
|
signalProcessingDone();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -105,7 +105,7 @@ public final class PacketFilterManager implements ProtocolManager {
|
|||||||
private SortedPacketListenerList sendingListeners = new SortedPacketListenerList();
|
private SortedPacketListenerList sendingListeners = new SortedPacketListenerList();
|
||||||
|
|
||||||
// Whether or not this class has been closed
|
// Whether or not this class has been closed
|
||||||
private boolean hasClosed;
|
private volatile boolean hasClosed;
|
||||||
|
|
||||||
// The default class loader
|
// The default class loader
|
||||||
private ClassLoader classLoader;
|
private ClassLoader classLoader;
|
||||||
@ -700,23 +700,26 @@ public final class PacketFilterManager implements ProtocolManager {
|
|||||||
|
|
||||||
public void close() {
|
public void close() {
|
||||||
// Guard
|
// Guard
|
||||||
if (hasClosed)
|
if (hasClosed || playerInjection == null)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
// Remove everything
|
// Remove everything
|
||||||
for (PlayerInjector injection : playerInjection.values()) {
|
for (PlayerInjector injection : playerInjection.values()) {
|
||||||
injection.cleanupAll();
|
if (injection != null) {
|
||||||
|
injection.cleanupAll();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Remove packet handlers
|
// Remove packet handlers
|
||||||
if (packetInjector != null)
|
if (packetInjector != null)
|
||||||
packetInjector.cleanupAll();
|
packetInjector.cleanupAll();
|
||||||
|
|
||||||
|
hasClosed = true;
|
||||||
|
|
||||||
// Remove listeners
|
// Remove listeners
|
||||||
packetListeners.clear();
|
packetListeners.clear();
|
||||||
playerInjection.clear();
|
playerInjection.clear();
|
||||||
connectionLookup.clear();
|
connectionLookup.clear();
|
||||||
hasClosed = true;
|
|
||||||
|
|
||||||
// Clean up async handlers. We have to do this last.
|
// Clean up async handlers. We have to do this last.
|
||||||
asyncFilterManager.cleanupAll();
|
asyncFilterManager.cleanupAll();
|
||||||
|
In neuem Issue referenzieren
Einen Benutzer sperren