From a5ffd47935c52dbbfd37dd86403d3874f3901062 Mon Sep 17 00:00:00 2001 From: Moxie Marlinspike Date: Thu, 25 Jun 2015 11:00:59 -0700 Subject: [PATCH] Gotta stub out message field for delivery receipts w/ old clients // FREEBIE --- protobuf/TextSecure.proto | 2 +- .../textsecuregcm/storage/Messages.java | 13 +++++++++++-- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/protobuf/TextSecure.proto b/protobuf/TextSecure.proto index 1a85722d6..65add730f 100644 --- a/protobuf/TextSecure.proto +++ b/protobuf/TextSecure.proto @@ -33,7 +33,7 @@ message Envelope { optional uint32 sourceDevice = 7; optional string relay = 3; optional uint64 timestamp = 5; - optional bytes legacyMessage = 6; // Contains an encrypted DataMessage + optional bytes legacyMessage = 6; // Contains an encrypted DataMessage XXX -- Remove after 10/01/15 optional bytes content = 8; // Contains an encrypted Content } diff --git a/src/main/java/org/whispersystems/textsecuregcm/storage/Messages.java b/src/main/java/org/whispersystems/textsecuregcm/storage/Messages.java index 8f7e962f1..b7ecda3a2 100644 --- a/src/main/java/org/whispersystems/textsecuregcm/storage/Messages.java +++ b/src/main/java/org/whispersystems/textsecuregcm/storage/Messages.java @@ -66,13 +66,22 @@ public abstract class Messages { public OutgoingMessageEntity map(int i, ResultSet resultSet, StatementContext statementContext) throws SQLException { + + int type = resultSet.getInt(TYPE); + byte[] legacyMessage = resultSet.getBytes(MESSAGE); + + if (type == Envelope.Type.RECEIPT_VALUE && legacyMessage == null) { + /// XXX - REMOVE AFTER 10/01/15 + legacyMessage = new byte[0]; + } + return new OutgoingMessageEntity(resultSet.getLong(ID), - resultSet.getInt(TYPE), + type, resultSet.getString(RELAY), resultSet.getLong(TIMESTAMP), resultSet.getString(SOURCE), resultSet.getInt(SOURCE_DEVICE), - resultSet.getBytes(MESSAGE), + legacyMessage, resultSet.getBytes(CONTENT)); } }