diff --git a/pom.xml b/pom.xml index 4ce3ae012..25601fc69 100644 --- a/pom.xml +++ b/pom.xml @@ -56,7 +56,7 @@ com.google.protobuf protobuf-java - 2.5.0 + 2.4.1 diff --git a/src/main/java/org/whispersystems/textsecuregcm/controllers/MessageController.java b/src/main/java/org/whispersystems/textsecuregcm/controllers/MessageController.java index 07d929205..bfb3f156f 100644 --- a/src/main/java/org/whispersystems/textsecuregcm/controllers/MessageController.java +++ b/src/main/java/org/whispersystems/textsecuregcm/controllers/MessageController.java @@ -88,12 +88,13 @@ public class MessageController { rateLimiters.getMessagesLimiter().validate(source.getNumber()); try { - if (messages.getRelay() != null) sendLocalMessage(source, destinationName, messages); + if (messages.getRelay() == null) sendLocalMessage(source, destinationName, messages); else sendRelayMessage(source, destinationName, messages); } catch (NoSuchUserException e) { throw new WebApplicationException(Response.status(404).build()); } catch (MismatchedDevicesException e) { throw new WebApplicationException(Response.status(409) + .type(MediaType.APPLICATION_JSON_TYPE) .entity(new MismatchedDevices(e.getMissingDevices(), e.getExtraDevices())) .build()); diff --git a/src/main/java/org/whispersystems/textsecuregcm/storage/Keys.java b/src/main/java/org/whispersystems/textsecuregcm/storage/Keys.java index c828709fa..be416dbe3 100644 --- a/src/main/java/org/whispersystems/textsecuregcm/storage/Keys.java +++ b/src/main/java/org/whispersystems/textsecuregcm/storage/Keys.java @@ -63,7 +63,8 @@ public abstract class Keys { @Mapper(PreKeyMapper.class) abstract PreKey retrieveFirst(@Bind("number") String number, @Bind("device_id") long deviceId); - @SqlQuery("SELECT DISTINCT ON (number, device_id) * FROM keys WHERE number = :number ORDER BY key_id ASC FOR UPDATE") + @SqlQuery("SELECT DISTINCT ON (number, device_id) * FROM keys WHERE number = :number ORDER BY number, device_id, key_id ASC") + @Mapper(PreKeyMapper.class) abstract List retrieveFirst(@Bind("number") String number); @Transaction(TransactionIsolationLevel.SERIALIZABLE)