When we changed wires from /a/foo to /ames/foo, our sorting function
started sorting by last character instead of first character, so breach
notifications were given to gall before ames. This made gall try to
resubscribe before ames cleared its state, so the message would be lost.
Fixes#4177
* master: (94 commits)
glob: update to 0v5.bo337.25di9.mg5d5.i9vun.5qaqe
default.nix: fix typo in examples section
build: document use of ares.cachix.org in the top-level README
build: use ares.cachix.org for continuous integration
chat: lazier chat loading
notifications: fix invite squashing
graph-store: turn back on noisy duplicates
push-hook: fix duplicate messages being sent
release: urbit-os-v2.7
graph-store: silence duplicate message assertion temporarily
release: urbit-os-v2.6
graph-pull-hook: silence issues temporarily
release: urbit-os-v2.5
graph-store: no need to iterate through whole list if we find a single duplicate
graph-store: address ted and mark's comments
debug: render queued ames acks correctly
graph-store: no-op if we already have *any* of the indexes in an %add-nodes event
glob: update to 0vada5t.b1gqn.oo4ga.6o12h.ek1ot
graph-store: remove unnecessary clay write upon clobber
landscape: mentions avoid passing entire contacts
...
This lets applications suggest to the client that they should gracefully
unsubscribe from the session.
Arguably this might be accomplished by %kick-ing the client and then
crashing on their subsequent resubscribe, but this requires tracking
their sole session id and has less semantic clarity on what's happening.
The added logic also happens in +se-drop, which will get called by
+se-abet if we did unlink an application. But +se-agon depends on the
index being sane, and may be called between +se-klin and +se-abet.
tapping an ordered map returns a list with the smallest keys first.
However, graph-store's update-log is defined backwards, such that the
list will have the most recent updates in the front of the list. We
therefore flop the update log before iterating over it, in order to
process the updates in the order they occurred