Remove support for END_SESSION flag.

This commit is contained in:
Greyson Parrelli
2026-05-12 16:48:00 -04:00
committed by Michelle Tang
parent 59b42ac546
commit 64cdff4638
5 changed files with 1 additions and 41 deletions
@@ -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 -> {
@@ -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,
@@ -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
@@ -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
@@ -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;