Skip to content

docs(pong): require non-empty sni for Peer.sni and Property.sni - #51

Merged
davvd merged 1 commit into
APN-Network:masterfrom
VasilevNStas:20-docs/peer-sni-nonempty
Jul 4, 2026
Merged

docs(pong): require non-empty sni for Peer.sni and Property.sni#51
davvd merged 1 commit into
APN-Network:masterfrom
VasilevNStas:20-docs/peer-sni-nonempty

Conversation

@VasilevNStas

Copy link
Copy Markdown
Contributor

Description

Documents that Peer.sni and Property.sni MUST be non-empty and that clients MUST discard peers/properties with empty SNI rather than dialling them.

Problem

Peer.sni (field 6) had no non-empty contract. An empty SNI causes the client to send an empty SNI extension (or omit it entirely), which the target Node rejects. The resulting connection failure is indistinguishable from the Node being unreachable, so the client silently rotates away from a healthy Node or enters a retry loop.

Property.sni (field 8) already said "Empty while the slot is detached" but didn't instruct clients not to dial it.

Changes

  • Peer.sni: added "MUST be non-empty; an empty sni would cause a TLS handshake failure indistinguishable from a dead Node. Clients MUST discard a Peer with an empty sni rather than dialling it."
  • Property.sni: added "clients MUST NOT dial a slot with an empty sni."

Closes #20

@VasilevNStas

Copy link
Copy Markdown
Contributor Author

@yegor256 @davvd plz review

@davvd
davvd merged commit 71eb584 into APN-Network:master Jul 4, 2026
@0crat

0crat commented Jul 4, 2026

Copy link
Copy Markdown

@VasilevNStas Thanks for the contribution! You've earned +8 points for this: +16 as a basis; -8 for too few (8) hits-of-code. Please, keep them coming. Your running score is +36; don't forget to check your Zerocracy account too).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Peer.sni has no non-empty contract; empty sni causes a TLS handshake failure indistinguishable from a dead Node

3 participants