Only handle dead letters to addresses, not connection info.

// FREEBIE
This commit is contained in:
Moxie Marlinspike 2015-07-30 14:16:39 -07:00
parent c74e0b9eab
commit 328bb47d44
2 changed files with 19 additions and 13 deletions

View File

@ -20,22 +20,24 @@ public class DeadLetterHandler implements DispatchChannel {
@Override @Override
public void onDispatchMessage(String channel, byte[] data) { public void onDispatchMessage(String channel, byte[] data) {
try { if (!WebSocketConnectionInfo.isType(channel)) {
logger.warn("Handling dead letter to: " + channel); try {
logger.info("Handling dead letter to: " + channel);
WebsocketAddress address = new WebsocketAddress(channel); WebsocketAddress address = new WebsocketAddress(channel);
PubSubMessage pubSubMessage = PubSubMessage.parseFrom(data); PubSubMessage pubSubMessage = PubSubMessage.parseFrom(data);
switch (pubSubMessage.getType().getNumber()) { switch (pubSubMessage.getType().getNumber()) {
case PubSubMessage.Type.DELIVER_VALUE: case PubSubMessage.Type.DELIVER_VALUE:
Envelope message = Envelope.parseFrom(pubSubMessage.getContent()); Envelope message = Envelope.parseFrom(pubSubMessage.getContent());
messagesManager.insert(address.getNumber(), address.getDeviceId(), message); messagesManager.insert(address.getNumber(), address.getDeviceId(), message);
break; break;
}
} catch (InvalidProtocolBufferException e) {
logger.warn("Bad pubsub message", e);
} catch (InvalidWebsocketAddressException e) {
logger.warn("Invalid websocket address", e);
} }
} catch (InvalidProtocolBufferException e) {
logger.warn("Bad pubsub message", e);
} catch (InvalidWebsocketAddressException e) {
logger.warn("Invalid websocket address", e);
} }
} }

View File

@ -33,6 +33,10 @@ public class WebSocketConnectionInfo implements PubSubAddress {
return address; return address;
} }
public static boolean isType(String address) {
return address.endsWith(":c");
}
@Override @Override
public boolean equals(Object other) { public boolean equals(Object other) {
return return