From 64cdff4638296ea38f628aa2dd5f8b3c12ff5c2f Mon Sep 17 00:00:00 2001 From: Greyson Parrelli Date: Tue, 12 May 2026 16:48:00 -0400 Subject: [PATCH] Remove support for END_SESSION flag. --- .../securesms/database/MessageTable.kt | 1 - .../securesms/database/MessageType.kt | 3 -- .../messages/DataMessageProcessor.kt | 33 ------------------- .../messages/SignalServiceProtoUtil.kt | 3 -- .../src/main/protowire/SignalService.proto | 2 +- 5 files changed, 1 insertion(+), 41 deletions(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/database/MessageTable.kt b/app/src/main/java/org/thoughtcrime/securesms/database/MessageTable.kt index 0bb8b60a79..b136b950ff 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/database/MessageTable.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/database/MessageTable.kt @@ -6137,7 +6137,6 @@ open class MessageTable(context: Context?, databaseHelper: SignalDatabase) : Dat MessageType.IDENTITY_UPDATE -> MessageTypes.KEY_EXCHANGE_IDENTITY_UPDATE_BIT or MessageTypes.BASE_INBOX_TYPE MessageType.IDENTITY_VERIFIED -> MessageTypes.KEY_EXCHANGE_IDENTITY_VERIFIED_BIT or MessageTypes.BASE_INBOX_TYPE MessageType.IDENTITY_DEFAULT -> MessageTypes.KEY_EXCHANGE_IDENTITY_DEFAULT_BIT or MessageTypes.BASE_INBOX_TYPE - MessageType.END_SESSION -> MessageTypes.END_SESSION_BIT or MessageTypes.BASE_INBOX_TYPE MessageType.POLL_TERMINATE -> MessageTypes.SPECIAL_TYPE_POLL_TERMINATE or MessageTypes.BASE_INBOX_TYPE MessageType.PINNED_MESSAGE -> MessageTypes.SPECIAL_TYPE_PINNED_MESSAGE or MessageTypes.BASE_INBOX_TYPE MessageType.GROUP_UPDATE -> { diff --git a/app/src/main/java/org/thoughtcrime/securesms/database/MessageType.kt b/app/src/main/java/org/thoughtcrime/securesms/database/MessageType.kt index 6cf09d80c3..e21e2d8bd9 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/database/MessageType.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/database/MessageType.kt @@ -44,9 +44,6 @@ enum class MessageType { /** You unverified a user's identity/safety number, resetting it to the default state */ IDENTITY_DEFAULT, - /** A manual session reset. This is no longer used and is only here for handling possible inbound/sync messages. */ - END_SESSION, - /** A poll has ended **/ POLL_TERMINATE, diff --git a/app/src/main/java/org/thoughtcrime/securesms/messages/DataMessageProcessor.kt b/app/src/main/java/org/thoughtcrime/securesms/messages/DataMessageProcessor.kt index c914981fcc..b43437020a 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/messages/DataMessageProcessor.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/messages/DataMessageProcessor.kt @@ -23,7 +23,6 @@ import org.thoughtcrime.securesms.components.emoji.EmojiUtil import org.thoughtcrime.securesms.contactshare.Contact import org.thoughtcrime.securesms.contactshare.ContactModelMapper import org.thoughtcrime.securesms.crypto.ProfileKeyUtil -import org.thoughtcrime.securesms.crypto.SecurityEvent import org.thoughtcrime.securesms.database.AttachmentTable import org.thoughtcrime.securesms.database.MessageTable import org.thoughtcrime.securesms.database.MessageTable.InsertResult @@ -78,7 +77,6 @@ import org.thoughtcrime.securesms.messages.SignalServiceProtoUtil.expireTimerDur import org.thoughtcrime.securesms.messages.SignalServiceProtoUtil.groupMasterKey import org.thoughtcrime.securesms.messages.SignalServiceProtoUtil.hasGroupContext import org.thoughtcrime.securesms.messages.SignalServiceProtoUtil.hasRemoteDelete -import org.thoughtcrime.securesms.messages.SignalServiceProtoUtil.isEndSession import org.thoughtcrime.securesms.messages.SignalServiceProtoUtil.isExpirationUpdate import org.thoughtcrime.securesms.messages.SignalServiceProtoUtil.isInvalid import org.thoughtcrime.securesms.messages.SignalServiceProtoUtil.isMediaMessage @@ -172,7 +170,6 @@ object DataMessageProcessor { SignalTrace.beginSection("DataMessageProcessor#messageInsert") when { message.isInvalid -> handleInvalidMessage(context, senderRecipient.id, groupId, envelope.clientTimestamp!!) - message.isEndSession -> insertResult = handleEndSessionMessage(context, senderRecipient.id, envelope, metadata) message.isExpirationUpdate -> insertResult = handleExpirationUpdate(envelope, metadata, senderRecipient, threadRecipient.id, groupId, message.expireTimerDuration, message.expireTimerVersion, receivedTime, false) message.isStoryReaction -> insertResult = handleStoryReaction(context, envelope, metadata, message, senderRecipient.id, groupId) message.reaction != null -> messageId = handleReaction(context, envelope, message, senderRecipient.id, earlyMessageCacheEntry) @@ -310,36 +307,6 @@ object DataMessageProcessor { } } - private fun handleEndSessionMessage( - context: Context, - senderRecipientId: RecipientId, - envelope: Envelope, - metadata: EnvelopeMetadata - ): InsertResult? { - log(envelope.clientTimestamp!!, "End session message.") - - val incomingMessage = IncomingMessage( - from = senderRecipientId, - sentTimeMillis = envelope.clientTimestamp!!, - serverTimeMillis = envelope.serverTimestamp!!, - receivedTimeMillis = System.currentTimeMillis(), - isUnidentified = metadata.sealedSender, - serverGuid = UuidUtil.getStringUUID(envelope.serverGuid, envelope.serverGuidBinary), - type = MessageType.END_SESSION - ) - - val insertResult: InsertResult? = SignalDatabase.messages.insertMessageInbox(incomingMessage).orNull() - - return if (insertResult != null) { - AppDependencies.protocolStore.aci().deleteAllSessions(metadata.sourceServiceId.toString()) - SecurityEvent.broadcastSecurityUpdateEvent(context) - AppDependencies.messageNotifier.updateNotification(context, ConversationId.forConversation(insertResult.threadId)) - insertResult - } else { - null - } - } - /** * @param sideEffect True if the event is side effect of a different message, false if the message itself was an expiration update. * @throws StorageFailedException diff --git a/app/src/main/java/org/thoughtcrime/securesms/messages/SignalServiceProtoUtil.kt b/app/src/main/java/org/thoughtcrime/securesms/messages/SignalServiceProtoUtil.kt index a39a66c1f4..8ba59d11d4 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/messages/SignalServiceProtoUtil.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/messages/SignalServiceProtoUtil.kt @@ -88,9 +88,6 @@ object SignalServiceProtoUtil { val DataMessage.isMediaMessage: Boolean get() = attachments.isNotEmpty() || quote != null || contact.isNotEmpty() || sticker != null || bodyRanges.isNotEmpty() || preview.isNotEmpty() - val DataMessage.isEndSession: Boolean - get() = flags != null && flags!! and DataMessage.Flags.END_SESSION.value != 0 - val DataMessage.isStoryReaction: Boolean get() = reaction != null && storyContext != null diff --git a/lib/libsignal-service/src/main/protowire/SignalService.proto b/lib/libsignal-service/src/main/protowire/SignalService.proto index 0089a163c5..60cbd8642d 100644 --- a/lib/libsignal-service/src/main/protowire/SignalService.proto +++ b/lib/libsignal-service/src/main/protowire/SignalService.proto @@ -187,7 +187,7 @@ message CallMessage { message DataMessage { enum Flags { - END_SESSION = 1; + reserved /*END_SESSION*/ 1; EXPIRATION_TIMER_UPDATE = 2; PROFILE_KEY_UPDATE = 4; FORWARD = 8;