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

enbility / ship-go / 30111263527
93%

Build:
DEFAULT BRANCH: dev
Ran 24 Jul 2026 05:03PM UTC
Jobs 1
Files 45
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

24 Jul 2026 04:59PM UTC coverage: 93.028% (+0.04%) from 92.993%
30111263527

push

github

web-flow
fix(pairing): listener reactivation, dead-trust recovery, and mDNS record lifecycle fixes (#87)

Fixes a set of SHIP Pairing Service (SPS) issues around addCu trust
removal, listener reactivation, and the mDNS record lifecycle, found
while running the SPS test spec (TC_SPS_PROC/TRUST series) against the
DUT.

1. Listener reactivation on addCu trust removal

Per spec §4.3 item 2.b / §10.4 *3, user removal of the trusted addCu
device must reactivate addCu-request processing immediately.
UnregisterRemoteService now derives the pairing type from the stored
entry (the caller-supplied identity may carry none), removes the exact
registry entry by pointer instead of re-matching identifiers (fixes
removals missing loosely-spelled identities), stops any pending
replacement timer, and reactivates the pairing listener.
ErrListenerAlreadyActive is treated as success.

2. mDNS cache eviction and recovery from dead trust

- Goodbye events are handled before TXT validation and keyed on the
instance name alone — mDNS removes often carry no TXT data (avahi echoes
cached elements, zeroconf reports incomplete records), so removals were
previously dropped and stale records lingered forever.
- §4.3 1.a recovery window from trust establishment: an accepted request
may be withdrawn before a SHIP connection materialises (observed in
test-sequence races). OnPairingSuccess now arms the 15-minute
replacement timer when no connection exists for the accepted device; it
is stopped as soon as the connection completes. Without this, dead trust
left the listener off permanently.

3. Live-record evaluation moved into StartListening

The browse callback fires once per service instance; announcements
received while no listener is active were dropped and never
re-delivered. The hub previously replayed the record cache after each
reactivation call site — and the startup path missed it (a devZ
announcing before Start() was never evaluated). StartListening now
registers the callback and then... (continued)

67 of 71 new or added lines in 5 files covered. (94.37%)

5844 of 6282 relevant lines covered (93.03%)

12009.23 hits per line

Uncovered Changes

Lines Coverage ∆ File
2
97.46
0.0% hub/hub.go
2
93.17
-0.58% pairing/listener.go
Jobs
ID Job ID Ran Files Coverage
1 30111263527.1 24 Jul 2026 05:03PM UTC 45
93.03
GitHub Action Run
Source Files on build 30111263527
  • Tree
  • List 45
  • Changed 6
  • Source Changed 6
  • Coverage Changed 6
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Github Actions Build #30111263527
  • 2c80e567 on github
  • Prev Build on dev (#29737265458)
  • Next Build on dev (#30114636067)
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