-
Notifications
You must be signed in to change notification settings - Fork 37
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Unable to receive messages sent by another person from gurk #234
Comments
My guess would be that it has something to do with the websocket bug. Presage currently has a bug caching the websockets in use. Also there is no reconnect there, in case a connection to the websocket is closed. There is another problem that sent messages from gurk do not appear in the android or desktop signal app. This might be connected. |
I can reproduce this using the recent version Would be happy to assist with more information if needed. |
What I see in the logs, when the message is not showing is the following line:
We still don't know why this happens. After resetting the session messages arrive again. |
I've been running gurk with #321 and with Line 140 in 6bcc592
Lines 188 to 201 in 6bcc592
This avoids briefly having two identified websockets open before one of them is closed with reason |
I'm reasonably confident that I have found the ultimate cause. When reconnecting (which is simply made more likely by gurk's whisperfish/libsignal-service-rs@b0fcd8b has taken the first step prevent this, so once The contact sync should be fine, despite its other issues. |
Nicht catch. I will try to verify this empirically by a quick and dirty patch of Gurk.Am 03.11.2024 00:52 schrieb hrdl ***@***.***>:
I'm reasonably confident that I have found the ultimate cause. When reconnecting (which is simply made more likely by gurk's request_contacts_sync()), presage creates a couple of StdRng instances, reusing a historical state. This can cause libsignal to create key chains that share the same sender ratchet keys as a recent historic chain https://github.com/signalapp/libsignal/blob/c6a1e5cec6a30759716a33d0586c84ef6f4f613e/rust/protocol/src/session_cipher.rs#L664, but with the remaining key material differing. If the sender ratchet key is known by the receiving device (i.e. an illegal reuse has taken place and the chain hasn't been trimmed yet) the correct chain will not be created. Instead, the old chain will be used, causing either Duplicate message errors if the counters have already been used, or Bad Mac errors as the key material differs despite the sender ratchet key being the same.
***@***.*** has taken the first step prevent this, so once presage is updated, gurk just needs to follow suit.
The contact sync should be fine, despite its other issues.
—Reply to this email directly, view it on GitHub, or unsubscribe.You are receiving this because you commented.Message ID: ***@***.***>
|
Let me push my presage branch that features a workaround: https://github.com/hrdl-github/presage/tree/fix-rng |
This includes the fix whisperfish/presage#292 in particular fixing the long-standing issue #234. Also adjust usage of presage::Store API which is now asynchronous. One possibly negative side-effect is that the UI looks up in the contact names cache in read-only fashion, and only the async part of gurk can populate the cache using the store. Also fix clippy warnings.
Person A and person B both run signal on Android, scli and gurk.
If person A sends message from android or scli, person B will receive them in all 3 apps.
If person A sends message from gurk, person B will only receive them in android and scli, but not in gurk.
The same in reverse, when person B sends a message.
--verbose
doesn't show anything, when person A sends message via gurk, person B will only see this one line in the log:I'm a bit puzzled what can be going on here, any suggestions how to debug this further?
The text was updated successfully, but these errors were encountered: