Fix false TURN allocation failure, add attention recap, one-at-a-time reprint

Real bug caught from a live run: the coturn allocation test passed -t -T
(TCP/TLS) to turnutils_uclient, but services/coturn.sh always starts
coturn with --no-tls --no-dtls — requesting an encrypted/TCP transport
against a server that never offered one fails the allocation outright
("Cannot complete Allocation"), misreporting a config problem that didn't
exist. Dropped both flags in both tools/pstn-test-check.sh and
tools/coturn-test-check.sh so the test matches what the server actually
supports (plain UDP).

Also, from user feedback on the same run:
- warn()/fail() now collect their messages into arrays; the Summary
  section prints a "Needs attention" recap of every FAIL/WARN together
  at the end, instead of leaving the user to scroll back through a long
  run to find what needs fixing.
- The softphone-setup block now offers to reprint itself one extension
  at a time (paced with a keypress between each) after the main run, so
  a long device list isn't lost in the scrollback either. Factored the
  per-extension print into print_ext_info() so the full run and this
  reprint can't drift apart. Guarded with `[ -t 0 ]` so it's skipped
  automatically when the script isn't run interactively.

Verified via a fuller mock harness (fake docker/curl/systemctl/getent,
non-TTY stdin) that: the corrected turnutils_uclient invocation reports
success, the recap correctly lists FAIL before WARN, and the interactive
reprint prompt is skipped without hanging when stdin isn't a terminal.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01H4k6J1qXXyYxhGEgnJaMvn
This commit is contained in:
Claude
2026-08-11 20:53:23 +00:00
parent a66b82beaa
commit 5dbfcbd120
2 changed files with 71 additions and 20 deletions
+7 -1
View File
@@ -160,7 +160,13 @@ else
warn "$c: couldn't read cached credentials, skipping live test"
continue
fi
OUT="$(docker exec coturn timeout 10 turnutils_uclient -t -T -u "$_u" -w "$_p" "$TEST_HOST" -p "$COTURN_PORT" 2>&1)"
# Plain UDP only — no -t/-T (TCP/TLS) flags; coturn runs with
# --no-tls --no-dtls (services/coturn.sh), so requesting an
# encrypted/TCP transport here fails the allocation against a
# server that never offered one. See tools/pstn-test-check.sh's
# matching comment — confirmed live this was the actual cause of a
# "Cannot complete Allocation" failure, not a real coturn problem.
OUT="$(docker exec coturn timeout 10 turnutils_uclient -u "$_u" -w "$_p" "$TEST_HOST" -p "$COTURN_PORT" 2>&1)"
RC=$?
if [ "$RC" -eq 0 ]; then
ok "$c: TURN allocation succeeded (credentials + relay range + reachability all confirmed working)"