Skip to content

fix(coturn): v0.1.2.1 — enable rfc5780 and require external-ip pair form#13

Merged
vnykmshr merged 3 commits intomainfrom
release/v0.1.2.1-coturn-fix
Apr 26, 2026
Merged

fix(coturn): v0.1.2.1 — enable rfc5780 and require external-ip pair form#13
vnykmshr merged 3 commits intomainfrom
release/v0.1.2.1-coturn-fix

Conversation

@vnykmshr
Copy link
Copy Markdown
Contributor

Summary

Patch release fixing two real-world bugs in the bundled coturn config that defeat v0.1.2's headline filtering classification feature.

What broke

Discovered by trying to validate v0.1.2 end-to-end against a real coturn 4.10.0:

  1. Missing rfc5780 directive. coturn 4.x defaults RFC 5780 NAT behavior discovery to OFF. Without rfc5780 in the conf, coturn logs RFC5780 disabled! /NAT behavior discovery/ and silently omits OTHER-ADDRESS from Binding responses. natcheck capability detection (internal/cli/cli.go:79–89) misses, filtering reports untested with WarnFilteringSkippedNoChangeRequest.
  2. Bare external-ip=PUBLIC triggers STUN CHANGE_REQUEST not supported: only one IP address is provided. coturn requires the pair form external-ip=public/private even on a single-NIC VM where the two IPs differ (public from cloud provider, private from ip addr).

Net effect: a user following docs/coturn-setup.md on a $5 VPS got coturn that didn't speak §4.4. Filtering classification never ran, despite v0.1.2 being about filtering classification.

What changed

  • examples/coturn-natcheck.conf — adds rfc5780; switches external-ip=YOUR_PUBLIC_IPexternal-ip=YOUR_PUBLIC_IP/YOUR_PRIVATE_IP; expands the surrounding comments.
  • docs/coturn-setup.md — documents both requirements; adds a verification step (step 4) that has the user grep coturn's stdout for the two specific WARNING/INFO lines that signal a misconfigured §4.4 path. The "untested" failure-mode bullet now points back to step 4.
  • CHANGELOG.md[0.1.2.1] Fixed entry, link refs.

Scope

Conf-asset + docs only. No Go source change. go install github.com/1mb-dev/natcheck/cmd/natcheck@v0.1.2 produces the same binary as @v0.1.2.1. The patch tag exists so the Homebrew formula and changelog can point at the corrected setup story.

Test plan

  • make test (race, count=1) — green (no code change but sanity)
  • make lint — 0 issues
  • gofmt -l . — clean
  • coturn 4.10.0 with the new conf: rfc5780 enabled, STUN CHANGE_REQUEST not supported warning gone — verified locally
  • CI green on this PR
  • Tag v0.1.2.1 on the merge commit; Pages workflow fires; gh release create v0.1.2.1
  • Bump Homebrew tap formula to v0.1.2.1 (so brew upgrade natcheck lands the corrected examples/ and docs/ for users who installed via brew)

Two real-world bugs in the bundled coturn config that defeat v0.1.2's
headline filtering classification feature:

1. Missing rfc5780 directive. coturn 4.x defaults RFC 5780 NAT behavior
   discovery to OFF (--no-rfc5780 is deprecated default; --rfc5780
   enables). Without it, coturn logs "RFC5780 disabled! /NAT behavior
   discovery/" and silently omits OTHER-ADDRESS from Binding responses.
   natcheck capability detection misses, filtering reports "untested"
   with WarnFilteringSkippedNoChangeRequest.

2. Bare external-ip=PUBLIC triggers
   "STUN CHANGE_REQUEST not supported: only one IP address is provided".
   coturn requires the pair form external-ip=public/private even on a
   single-NIC VM where the two IPs differ (public from cloud provider,
   private from `ip addr`).

Net effect of (1)+(2): a user following docs/coturn-setup.md on a $5
VPS got coturn that didn't speak §4.4. Filtering classification never
ran.

Verified locally with coturn 4.10.0: with rfc5780 enabled and
external-ip pair form, the "RFC5780 disabled" and "STUN CHANGE_REQUEST
not supported" warnings clear.
Reflects the two coturn config fixes from 67230ff. Adds a verification
step (step 4) that has the user grep coturn's stdout for the two
specific WARNING/INFO lines that signal a misconfigured §4.4 path,
since natcheck's "filtering: untested" verdict alone doesn't tell the
user which side of the wire is at fault.
No code or schema delta. Conf-asset and setup-doc patch only.
Promotes [Unreleased] → [0.1.2.1] with link refs.
@vnykmshr vnykmshr merged commit 7bed641 into main Apr 26, 2026
5 checks passed
@vnykmshr vnykmshr deleted the release/v0.1.2.1-coturn-fix branch April 26, 2026 09:14
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.

1 participant