main
dev
chore/365-cut-1.2.1
fix/363-pin-db-path
feat/351-contact-settings-menu
feat/349-window-geometry
feat/355-migration-merge
integration/290-306-335
release/1.1.2-rc.3-allplatforms
fix/309-path-len-decode
chore/298-path-logging
fix/285-ingest-timelog
fix/252-block-outgoing-dm
feat/64-observer-config
feat/batch1-ux
chore/offband-rebrand
v1.2.1
v1.2.0
v1.1.2-rc.3-allplatforms
v1.1.2-rc.3
v1.1.2-rc.2
v1.0.0
observer-g2-rc3
observer-g2-rc4
observer-g2-rc5
observer-g2-rc6
observer-g2-rc7
observer-g2-rc8
observer-g2-rc9
v1.1.0-rc.1
v1.1.0-rc.2
v1.1.0-rc.3
v1.1.2-beta.1
v1.1.2-beta.2
v1.1.2-beta.3
v1.1.2-ble-test
v1.1.2-queuediag
v1.1.2-rc.1
v1.1.2-rc.1-b45-nearbyrep
v1.1.2-rc.1-b46-pathhash
v1.1.2-rc.1-b47-tracewidth
v1.1.2-rc.1-b48-repeatertrace
v1.1.2-rc.1-b49-maptrace
v1.1.2-rc.1-b50-tracefix
v1.1.2-rc.1-b51-originstrip
v1.1.2-rc.1-b52-channelqr
v1.1.2-rc.1-b53-viarepeater
v1.1.2-rc.1-b54-rxfed
v1.1.2-rc.1-b55-topology
v1.1.2-rc.1-b57-routeux
v1.1.2-rc.1-b58-toporeadout
v1.1.2-rc.3-b59-pathlen
${ noResults }
1 Commits (dev)
| Author | SHA1 | Message | Date |
|---|---|---|---|
|
|
977af98069 |
fix(#250): refuse to block your own node
Blocking yourself silently hid your own traffic with no visible cause, and because blocks are offloaded to the radio it was pushed there and could be pulled back by the connect-time union. BlockService gains a selfKeyHex, injected by the connector when the self key is learned and cleared on disconnect. Every add path refuses it (block, importKeys, maybePromote) — importKeys specifically, so a self-block already on the radio cannot be re-imported. setSelfKey also heals an existing self-block and pushes REMOVE, covering the case where the union pull lands before self-info arrives. Contacts and discovery sheets hide the Block option for your own node. Per Gemini review: heal on an unchanged key too (an early return would strand a self-block introduced after the key was known), and order setSelfKey so all in-memory state settles synchronously, keeping callers consistent even though the connector fires it unawaited. Adds test/services/block_service_test.dart — the first coverage for BlockService (10 tests). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> |
3 days ago |