Forgot to release a semaphore lock.

This commit is contained in:
Kristian S. Stangeland 2012-09-30 04:42:58 +02:00
parent e666d17dc2
commit 73005e032b
2 changed files with 10 additions and 6 deletions

View File

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

View File

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