Fix race handling contact sync with verified info (#1419)
When processing a contact sync with embedded identity key verification info, we were running overlapping async fetch/save operations on the same conversation model, causing a race that tends to clobber updates to the contact info. In this change we extend the application-level contact info handler to block on a subsequent call to the verification handler, which effectively serializes the fetch/save calls, and relieves the need for the message receiver to trigger a seperate event concerning the verification info on contact sync messages. Fixes #1408 // FREEBIE
This commit is contained in:
parent
07abe2639f
commit
51cd28bb4a
3 changed files with 14 additions and 26 deletions
|
@ -202,6 +202,18 @@
|
|||
color: details.color,
|
||||
active_at: conversation.get('active_at') || Date.now(),
|
||||
}).then(resolve, reject);
|
||||
}).then(function() {
|
||||
if (details.verified) {
|
||||
var verified = details.verified;
|
||||
var ev = new Event('verified');
|
||||
ev.verified = {
|
||||
state: verified.state,
|
||||
destination: verified.destination,
|
||||
identityKey: verified.identityKey.toArrayBuffer(),
|
||||
};
|
||||
ev.viaContactSync = true;
|
||||
return onVerified(ev);
|
||||
}
|
||||
});
|
||||
})
|
||||
.then(ev.confirm)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue