Whisperfish - The unofficial SailfishOS Signal client

I think I have faced the same issue just today. My contact send me a message (that arrived only to SD) that I had tried to send messages to her, can I try sending again. I then did a secure session reset for that contact with Whisperfish, and after that messages started working again both ways.

And I didn’t have logging on… If someone could send the logs about what’s happening at that time, please do.

1 Like

Thanks @direct85 and @rubdos for your great work with WF!

Unfortunately I had the same issue but I was able to capture the log. The most interesting lines for me are below, but please let me know if you need the full log (I am not able to tell what log part should be redacted):

I sent a message in a group where I can see messages from contact #1 but not from #2

[2022-12-14T10:59:46Z DEBUG libsignal_service::sender] message sent!
[2022-12-14T10:59:46Z WARN libsignal_service::sender] Server claims need sync, but not sending datamessage.
[2022-12-14T10:59:46Z TRACE whisperfish::model::session] STUB: Mark sent called
[2022-12-14T10:59:46Z TRACE whisperfish::model::message] Mark message 4576 sent 'true'

after a while, contact #2 sent me a message which I could not see in WF

[2022-12-14T11:39:59Z INFO whisperfish::worker::client] ServiceAddress(+11223344556677) received a message.
[2022-12-14T11:39:59Z TRACE whisperfish::store] receipt already exists, updating record
[2022-12-14T11:39:59Z TRACE whisperfish::store] Called fetch_message_by_id(4576)
[2022-12-14T11:39:59Z TRACE whisperfish::model::message] Mark message 4576 received 'true'
[2022-12-14T11:39:59Z TRACE whisperfish::model::session] Mark received called
[2022-12-14T11:40:07Z TRACE libsignal_service::websocket] Decoded WebSocketMessage { r#type: Some(Request), request: Some(WebSocketRequestMessage { verb: Some("PUT"), path: Some("/api/v1/message"), body: Some([1,2,3,4,5,6,7,8,9,0]), headers: ["X-Signal-Key: false", "X-Signal-Timestamp:1671018007311"], id: Some(6100622071962720652) }), response: None }
[2022-12-14T11:40:07Z TRACE libsignal_service::envelope] Envelope::decrypt: not encrypted
[2022-12-14T11:40:07Z TRACE libsignal_service::websocket] Sending response WebSocketResponseMessage { id: Some(37849017341341), status: Some(200), message: Some("OK"), headers: [], body: None }
[2022-12-14T11:40:07Z TRACE whisperfish::store::protocol_store] Reading own identity key pair
[2022-12-14T11:40:07Z TRACE whisperfish::store::utils] Opening file (async) /home/defaultuser/.local/share/be.rubdos/harbour-whisperfish/storage/identity/identity_key
[2022-12-14T11:40:07Z TRACE whisperfish::store::utils] Read file /home/defaultuser/.local/share/be.rubdos/harbour-whisperfish/storage/identity/identity_key with 64 bytes
[2022-12-14T11:40:07Z TRACE whisperfish::store::protocol_store] Loading sender key xxxxxxxxxxxxxxxxxxxxxxxx.1 yyyyyyyyyyyyyyyyyyyyyyyyyyyyy
[2022-12-14T11:40:07Z ERROR whisperfish::worker::client] Error opening envelope: SignalProtocolError(NoSenderKeyState { distribution_id: yyyyyyyyyyyyyyyyyyyyyyyyyyyyy })

So I guess there might be some sync issues in the message id, but I don’t know Signal protocol as much as you guys :slight_smile:

This should resolve itself within some time. Unfortunately, I did not implement the “request sender key” message (issue #480) that would handle this case. The maximum time for which the contact rekeys the sender key is two weeks. Until then, I suggest you use Signal Desktop to make sure you receive everything.

This happens when a contact is added to the group while your device/application (Whisperfish) was not yet capable of receiving the SenderKey data. You likely received the sender key before the upgrade to beta 13.

Potentially, hypothetically, you can trigger a secure session reset (enable debug options in settings, then go to the contact, and pull down to “secure session reset”), after which the device could possibly resend/rekey all sender keys. I’m not sure that this is part of the logic, however.

1 Like

Thanks for your quick feedback. While I can see option “secure session reset” in 1:1 chats, in group chats it is not available (at least in this particular one). But I was able to workaround it: it is enough to remove and add contact back to the group. And thanks for adding in beta13 the capacity to receive the SenderKey data, this issue should not happen anymore!

2 Likes

I should have clarified: a secure session reset always happens on a contact, never on a group. In your case, you would have triggered the reset on the faulty contact.

1 Like

I’ve tried resetting the secure session with the contact chat before removing/adding it from group but that did not work out for some reason…

1 Like

I got it also working by removing and adding a contact to a group.
But the interesting part is a group where I’m not part of administrators, so I cant do that trick.
I do not have a personal chat either with the contact whose messages I do not receive in the group.
Maybe trying to initiate personal chat and reset keys there, although this didn’t help in some of my tests on other contacts.
Would it help to wipe out WF and start with a clean installation?

Okay, good to know that that does not work. I was not sure whether there was logic in the Signal app for that.

That would work. The other option is to wait until the SenderKey gets automatically rekeyed, which takes between 0 and 14 days from the day you upgraded to beta 13.

Oh goodie goodie! Thanks for the answer.

Then I will just wait patiently and let keys reset themselves. Easiest!
I have Android Signal which I can startup sometimes to check I havent missed anything and initiate new chats.

1 Like

Let me know when/if it happens. I think I’ve had it happen, but I have not really formally verified.

This 500 error seems to have mysteriously resolved itself. Today I was able to send messages to a group and a contact, both of which failed in previous tests.

I don’t know of anything that I did that may have made a difference, since as whisperfish wasn’t working I’ve not used it much, and moreover I hadn’t tried to send any messages since the last test. It was more out of a sense of ‘let me make a post now so that I can have a reminder when whisperfish eventually fixes the issue’ that I even sent a message.

Let’s hope it keeps working now.

1 Like

Strange indeed. I see some changes on Signal Server that might have resolved this, but it’s more guess work than anything else.

Meanwhile, beta.13 introduced a bug that’ll require a hotfix. If you notice that you stop being able to send messages to a contact, or that Whisperfish mysteriously crashes upon reception of messages of some contacts, that’s this bug. There’s luckily no corruption going on.

1 Like

One of my 1:1 chats said that it was not possible to send me messages.
And some pictures where not delivered either - both ways.
Hopefully it’s the same bug :relaxed:

@lumen Try to do a secure session reset on that 1:1 session, by enabling debug mode in the settings, and pulling down on your contact page.

If you have time to debug, you could ask your contact to send you a message and capture your log of receiving the message.

I did that and it started to work again, however I didn’t take logs… I’ll take if I encounter again.

1 Like

I have in a 1:1 chat now double checkmarks that my message was delivered and read by recipient.
But when I swipe back to chat list, then there is only one checkmark.
Is this some kind of a “hick-up” that you’re interested in?

That’s a known (cosmetic) issue, the double checkmark on the chat page is correct. There are some similar issues with the session list, which require either manual update wiring, or which would be eliminated with the big refactoring somewhere down the line. I think I’ll have a look at it, since more pressing issues seem to keep postponing the rewrite further and further :sweat:

2 Likes

A new release by @direc85, @ichthyosaurus and myself to fix a bunch of issues, especially some caused by refactoring done in beta 13.

Whisperfish 0.6.0-beta.14

Bugfix release for most of the bugs we introduced in beta.13, and some fixes for changes upstream.

Changes

  • Attempt to handle HTTP 428 by responding with a reCAPTCHA challenge
  • Handle device mismatches (fixes sending to contacts that change their linking setup)
  • Attempt at fixing a crash at startup related to profile uploading
  • Fix a crash when opening an empty session
  • emoji.js now supports out-of-date emoji packages as fallback
  • Fix typing notification display of names in certain conditions
  • Marking as read fix for mismatched sessions
  • Cleaner formatting for linked device display

I’m working now on overhauling the whole QML binding system to allow for many more features in the near future, and which should fix many cosmetic things (such as @lumen’s comment wrt. checkmarks in the sesssion view), and which should allow for lazy loading and unloading of data in the long run.

It’s the last standing issue before we can move on to implementing more modern Signal features, and to giving a lot more feedback through the UI.

11 Likes

Is it supposed to say “Build ID: v0.6.0-dev” in About Whisperfish? It is difficult to see which version is installed then.

Right, another bug that we didn’t catch yet. Thanks for reporting!

1 Like