• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

tari-project / tari / 38729932013
77%

Build:
DEFAULT BRANCH: development
Ran 15 Oct 2026 01:14PM UTC
Jobs 1
Files 803
Run time 1min
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

15 Oct 2026 11:48AM UTC coverage: 75.558% (+0.6%) from 74.983%
38729932013

push

github

web-flow
fix(comms): lossless peer DB addresses, row cap and GC, direction-aware reaper, persisted bans (#8124)

## Description

Hardening of the comms connectivity reaper and peer database (SPEC-C of
the 2026-10-07 `tari_comms` audit, findings W3, W4 reaper half, W5, W12,
W21, W22, W24, W25).

Before this PR:
- **Poisoned rows broke every peer query, and the break survived
restarts.** A single claimed address with a `/` in its DNS name was
stored as text that no longer parsed. One such row made every peer DB
query fail, isolating the node.
- **The peer table grew without bound.** Identities are free, and dial
selection was uniform random over the whole table.
- **Inbound Sybils could evict honest outbound connections.** The reaper
counted inbound connections against its outbound threshold.
- **Handshake bans for unknown keys were silently lost.**

Wire-compatible: the identity message, the claim signature and the
address encoding on the wire are unchanged.

### Changes
- **Lossless address storage** (`peer_manager/storage`).
- New migration `2026-10-08-000000_address_bytes` adds `address_bytes`
(BLOB) and `netgroup` columns, plus indexes.
- A one-off data step, versioned in `db_metadata`, fills them in and
deletes rows that don't decode. It also deletes non-config rows whose
address, or any address in their stored claim, fails the shape check.
- All reads decode from bytes and skip a bad row with a warning and a
metric, instead of failing the whole query.
- Stored claims keep the existing text form, so an older node can still
read the DB after a downgrade. Addresses whose text form doesn't
round-trip are never written.
  - `size()` is now a `COUNT`, and limits moved into SQL.
- **DNS name validation** (`peer_validator`).
- A `/` in a DNS name (text round-trip failure) is still
`InvalidMultiaddr`, a ban offence.
- The new label rules are filter-only: the address is dropped, with no
ban and no hostile-relay count. They reject non-LDH characters,
over-long label... (continued)

2364 of 2408 new or added lines in 25 files covered. (98.17%)

449 existing lines in 23 files now uncovered.

130362 of 172533 relevant lines covered (75.56%)

312394.37 hits per line

Uncovered Changes

Lines Coverage ∆ File
16
95.2
2.47% comms/core/src/peer_manager/storage/database.rs
11
41.5
8.71% base_layer/p2p/src/initialization.rs
8
47.76
-6.94% comms/core/src/builder/mod.rs
2
74.48
1.81% comms/core/src/connectivity/manager.rs
2
91.71
2.78% comms/core/src/net_address/mutliaddresses_with_stats.rs
2
62.82
52.82% comms/core/src/peer_manager/peer_identity_claim.rs
1
91.07
2.27% comms/core/src/connection_manager/common.rs
1
89.32
0.41% comms/core/src/peer_manager/manager.rs
1
62.56
2.95% comms/dht/src/network_discovery/discovering.rs

Coverage Regressions

Lines Coverage ∆ File
112
41.5
8.71% base_layer/p2p/src/initialization.rs
60
89.03
0.09% comms/core/src/connection_manager/peer_connection.rs
55
91.26
18.22% comms/core/src/connection_manager/listener.rs
47
83.19
1.61% comms/core/src/connection_manager/manager.rs
42
47.76
-6.94% comms/core/src/builder/mod.rs
27
85.09
-1.17% comms/core/src/connection_manager/dialer.rs
26
89.09
66.15% comms/core/src/connection_manager/self_liveness.rs
15
84.47
-2.62% comms/core/src/builder/comms_node.rs
10
63.45
0.72% base_layer/core/src/chain_storage/blockchain_database.rs
10
91.03
0.52% base_layer/p2p/src/config.rs
10
28.57
0.0% comms/core/src/connection_manager/error.rs
7
74.48
1.81% comms/core/src/connectivity/manager.rs
6
68.97
-0.07% base_layer/wallet/src/transaction_service/storage/sqlite_db.rs
5
60.01
1.85% base_layer/core/src/chain_storage/lmdb_db/lmdb_db.rs
4
89.06
-0.48% comms/dht/src/actor.rs
3
73.01
0.14% base_layer/wallet/src/output_manager_service/storage/sqlite_db/mod.rs
2
87.45
-0.2% base_layer/core/src/proof_of_work/cuckaroo_pow.rs
2
84.68
-0.29% comms/core/src/protocol/rpc/client/mod.rs
2
96.43
-3.57% comms/core/src/utils/cidr.rs
1
92.9
-0.08% comms/core/src/multiplexing/yamux.rs
1
93.04
3.51% comms/core/src/net_address/multiaddr_with_stats.rs
1
93.31
2.91% comms/core/src/peer_manager/peer_storage_sql.rs
1
80.45
-0.1% comms/dht/src/connectivity/mod.rs
Jobs
ID Job ID Ran Files Coverage
1 38729932013.1 15 Oct 2026 01:14PM UTC 803
75.56
GitHub Action Run
Source Files on build 38729932013
  • Tree
  • List 803
  • Changed 53
  • Source Changed 33
  • Coverage Changed 53
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Github Actions Build #38729932013
  • 5c0b764e on github
  • Prev Build on development (#38698884399)
  • Next Build on development (#38866398825)
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE TRIAL · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc