Archiviert
13
0

Forgot to release a semaphore lock.

Dieser Commit ist enthalten in:
Kristian S. Stangeland 2012-09-30 04:42:58 +02:00
Ursprung e666d17dc2
Commit 73005e032b
2 geänderte Dateien mit 10 neuen und 6 gelöschten Zeilen

Datei anzeigen

@ -98,6 +98,7 @@ class PacketProcessingQueue extends AbstractConcurrentListenerMultimap<AsyncList
} else {
// No more queued packets.
signalProcessingDone();
return;
}
}

Datei anzeigen

@ -105,7 +105,7 @@ public final class PacketFilterManager implements ProtocolManager {
private SortedPacketListenerList sendingListeners = new SortedPacketListenerList();
// Whether or not this class has been closed
private boolean hasClosed;
private volatile boolean hasClosed;
// The default class loader
private ClassLoader classLoader;
@ -700,23 +700,26 @@ public final class PacketFilterManager implements ProtocolManager {
public void close() {
// Guard
if (hasClosed)
if (hasClosed || playerInjection == null)
return;
// Remove everything
for (PlayerInjector injection : playerInjection.values()) {
injection.cleanupAll();
if (injection != null) {
injection.cleanupAll();
}
}
// Remove packet handlers
if (packetInjector != null)
packetInjector.cleanupAll();
hasClosed = true;
// Remove listeners
packetListeners.clear();
playerInjection.clear();
connectionLookup.clear();
hasClosed = true;
// Clean up async handlers. We have to do this last.
asyncFilterManager.cleanupAll();