Fix bugs associated with PubSub encoding.

// FREEBIE
This commit is contained in:
Moxie Marlinspike 2014-12-12 12:35:05 -08:00
parent 77800dfb01
commit 8441fa9687
1 changed files with 10 additions and 6 deletions

View File

@ -32,14 +32,18 @@ public class PubSubManager {
} }
public synchronized void subscribe(WebsocketAddress address, PubSubListener listener) { public synchronized void subscribe(WebsocketAddress address, PubSubListener listener) {
listeners.put(address.serialize(), listener); String serializedAddress = address.serialize();
baseListener.subscribe(address.serialize().getBytes());
listeners.put(serializedAddress, listener);
baseListener.subscribe(serializedAddress.getBytes());
} }
public synchronized void unsubscribe(WebsocketAddress address, PubSubListener listener) { public synchronized void unsubscribe(WebsocketAddress address, PubSubListener listener) {
if (listeners.get(address.serialize()) == listener) { String serializedAddress = address.serialize();
listeners.remove(address.serialize());
baseListener.unsubscribe(address.serialize().getBytes()); if (listeners.get(serializedAddress) == listener) {
listeners.remove(serializedAddress);
baseListener.unsubscribe(serializedAddress.getBytes());
} }
} }
@ -101,7 +105,7 @@ public class PubSubManager {
PubSubListener listener; PubSubListener listener;
synchronized (PubSubManager.this) { synchronized (PubSubManager.this) {
listener = listeners.get(channel); listener = listeners.get(new String(channel));
} }
if (listener != null) { if (listener != null) {