Clock diff makes call impossible

If two different devices/accounts have clocks that differ only a few minutes, it becomes impossible to make a call, at least in the one direction. While this could make sense with regards to cryptography, the problem is that the users are not informed about the situation.

When A (:alarm_clock:8:20) calls B (:alarm_clock:8:16), it appears on A to just keep ringing, while B immediately gets a missed call without any ringtone. And that entry is marked “4 minutes” despite that it popped up right now.

On the other hand, making a call from B (:alarm_clock:8:16) to A (:alarm_clock:8:20) appears to work fine. Not sure why the difference?

Possible actions:

  1. When something like this occurs, both users need to be informed through their user interface so that they can take actions. Add a warning sign with some description to the “missed call” entry.

  2. Whether it’s about a call or any other data exchange, don’t ever use a timestamp of remote origin as the primary truth. It should be the local clock that decides the timestamp, even if it happens to be offset. The remote timestamp can be stored as complementary data.

  3. If possible, the call operation on the originating device should be aborted as soon as the error is detected.

I don’t think this is caused by any cryptography, currently the call is missed after ringing for 120 seconds. But if your clock is in the future, it may appear for you that all calls come from more than 120 seconds in the past.