Skip to content

Conversation

@valldrac
Copy link
Contributor

Description

This PR updates IncomingMessageObserver to accept SignalWebSocket as a constructor parameter. This change ensures each IncomingMessageObserver is explicitly tied to the SignalWebSocket instance owned by its NetworkDependenciesModule, resolving a race condition that could occur during a network reset.

Before this, IncomingMessageObserver got its SignalWebSocket from AppDependencies. During network resets (AppDependencies.resetNetwork()), NetworkDependenciesModule and its SignalWebSocket were recreated. If the old IncomingMessageObserver was still terminating asynchronously (terminateAsync()), it could accidentally reference and manipulate the new SignalWebSocket. So when disconnect() is called, it may disconnect the current SignalWebSocket, even if it is intended to disconnect the previous one. This led to issues like the old observer disconnecting the new socket, and the old socket remaining connected, appearing as if two observers were running simultaneously in the logs.

By directly injecting the corresponding SignalWebSocket, we eliminate the shared dependency and resolve the race condition.

@greyson-signal
Copy link
Contributor

This seems very reasonable! I'll run it on my phone for a bit, and if all is well we'll get it into the next release :)

TheTechZone pushed a commit to Cerenia/Signal-Android that referenced this pull request Jan 6, 2025
AbandonedCart pushed a commit to SamSprung/Signal-Android that referenced this pull request Jan 31, 2025
Update libphonenumber to 8.13.50

Import correct InvalidKeyException in LinkDeviceRepository.

Resolves signalapp#13808

Use the correct link device flag.

Add support for the new Benin phone format.

Update translations and other static files.

Bump version to 7.26.1

Update backup integration tests.

Add new rules to log scrubber.

Potential fix for a backup validation error.

Force relays only if remote user is not a 'Signal Connection'.

Add "your media will be deleted today" mechanism based off last checkin time and media TTL.

Remove orphaned attachments when creating a new backup.

Add sgnl://ideal support to app deeplinks.

Add unit test for RegistrationUtil.

Use AEP for regv3 flows.

Fix creating message_fts table during database migration.

Fixes signalapp#13034
Fixes signalapp#13506

Rebuild FTS index in V239_MessageFullTextSearchEmojiSupport.

Rebuild FTS index in V242_MessageFullTextSearchEmojiSupportV2.

Resolves signalapp#13810

Fix multiple activity finish after donation.

Fix icon gradient.

Use ChatListener to get connection interrupted event from libsignal; clear connection state when received

Flesh out restore paths for regv3.

Update to libsignal 0.63.0

Add an internal sqlite playground.

Update linked devices strings.

Allow renaming of linked device.

Fix export bugs causing validation errors.

Update GV2 spinner transformer to for group updates in message extras.

Improve storage service diff logging.

Remove some unnecessary call tab requeries.

Verify group ids on peer-to-peer group changes.

Inject SignalWebSocket into IncomingMessageObserver.

Resolves signalapp#13820

Use calling service type for calls.

Kotlin-ize some more tests.

Resolves signalapp#13813

Fix empty username backupv2 export.

Fix lost voice notes on orientation change.

Allow group removal shortcut in chat folders.

Use EmojiTextView for chat folder names.

Center call link button.

Add validation error UI.

Split remote user check for group vs individual calls.

Ensure updateMessageRequestAcceptedState runs on main thread.

Convert more tests to kotlin.

Resolves signalapp#13825

Update most of the backup integration tests.

Add some more link+sync logs.

Use AEP when validating backup.

Fix incorrect ACI/PNI storage for revoked invites in group updates.

Fix denial dialog for call links.

Handle web socket closed unexpectedly errors more gracefully.

Inline the expireVersion capability.

Inline the deleteSync capability.

Fix calls silent ringer bug.

Fix GSE crash when attempting to send to non-GV2 groups.

Update to the latest backup tests.

Add call link strings.

Add sms provider failed specific messaging during registration.

Better progress messaging.

Update translations and other static files.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants