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

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

Datei anzeigen

@ -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();