On 27/04/14 13:45, Ben Laurie wrote: > On 27 April 2014 18:40, Moxie Marlinspike <[email protected]> wrote: >> >> >> On 04/27/2014 07:39 AM, Ximin Luo wrote: >>> I'm not so sure about displaying messages where you haven't yet seen >>> their parents yet. This violates causality, and the principle of >>> delivering messages in-order. >> >> A fundamental premise of asynchronous messaging is that any message can >> be delayed hours or days for some or all recipients, or that any message >> can be lost entirely at any point in time for some or all recipients. > > If it is delayed for all recipients, then causality cannot be violated :-) > > Here's a crazy idea. > > Each client maintains a list of messages it knows each other client > has seen (because that client has told it so). Every time it sends a > message to another client, it also sends all messages it has seen that > it does not know the other client has seen. It also sends a list of > messages it knows the other client doesn't know it has seen.
Right. One could also give a grace period before resorting to this, assuming that short delays are more likely (and innocent) than long delays. The general principle is - if you receive a parent which refers to a messages you've not yet received, you *know something is wrong* and can take action, such as asking for a re-send. There's no need to violate causality in order to deal with this situation - this solution is worse than the original problem, in the ways that I described earlier. X -- GPG: 4096R/1318EFAC5FBBDBCE git://github.com/infinity0/pubkeys.git
signature.asc
Description: OpenPGP digital signature
_______________________________________________ Messaging mailing list [email protected] https://moderncrypto.org/mailman/listinfo/messaging
