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
public void onDispatchMessage(String channel, byte[] data) {
try {
logger.warn("Handling dead letter to: " + channel);
if (!WebSocketConnectionInfo.isType(channel)) {
try {
logger.info("Handling dead letter to: " + channel);
WebsocketAddress address = new WebsocketAddress(channel);
PubSubMessage pubSubMessage = PubSubMessage.parseFrom(data);
WebsocketAddress address = new WebsocketAddress(channel);
PubSubMessage pubSubMessage = PubSubMessage.parseFrom(data);
switch (pubSubMessage.getType().getNumber()) {
case PubSubMessage.Type.DELIVER_VALUE:
Envelope message = Envelope.parseFrom(pubSubMessage.getContent());
messagesManager.insert(address.getNumber(), address.getDeviceId(), message);
break;
switch (pubSubMessage.getType().getNumber()) {
case PubSubMessage.Type.DELIVER_VALUE:
Envelope message = Envelope.parseFrom(pubSubMessage.getContent());
messagesManager.insert(address.getNumber(), address.getDeviceId(), message);
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;
}
public static boolean isType(String address) {
return address.endsWith(":c");
}
@Override
public boolean equals(Object other) {
return