Skip to content

FreeSBC v0.5.1

Choose a tag to compare

@github-actions github-actions released this 20 Oct 01:34
· 29 commits to main since this release
1fdaf9f

FreeSBC v0.5.1 adds a one-line installer and bounds the last per-INVITE goroutine that outlived its call. Configuration is unchanged: a v0.5.0 file loads as is.

curl -fsSL https://github.com/rasonyang/freesbc/releases/latest/download/install.sh | sh

Breaking changes

None. No configuration key or dependency changed.

Install

  • install.sh (#239), published with each release from this one on.
    • It detects linux or darwin on amd64 or arm64, finds the latest tag from the releases/latest redirect (no API call), and checks the tarball against SHA256SUMS.
    • It installs freesbc to /usr/local/bin, using sudo only when that directory is not writable.
    • As root on a systemd host, it also creates the freesbc user, /etc/freesbc and the unit. It does not enable or start the service, and it never overwrites an existing config.
    • Options: --no-service, --dry-run, FREESBC_VERSION to pin a tag, FREESBC_PREFIX. With FREESBC_SWITCH, FREESBC_PRIVATE_IP and FREESBC_PUBLIC_IP set, it also writes the config with freesbc init.
    • SHA256SUMS comes from the same release, so the check catches a corrupted download, not a compromised release.
  • docs/install.md (new) now holds the manual download and checksum, building from source, the systemd layout and freesbc.env, and the freesbc init reference. The README's Install section is a short try-it-now block.

Performance

  • drainAcks stops 8 s after a 2xx (#243, closes #170). It used to wait until sipgo's 32 s Timer L. In a local test at 200 CPS, goroutines per CPS fell from 32.1 to 8.1 and stack per CPS from 72.5 KiB to 25.4 KiB. Behaviour after a non-2xx final is unchanged. The next three-host run will measure it on real hosts.

CI

  • The install job in ci.yml runs sh -n and shellcheck, then installs from a release packaged and served locally. It covers a re-run, --dry-run, a corrupted tarball that must fail, and the root systemd path.
  • The new install.yml runs the script against the real releases on ubuntu:24.04 and macOS: after each release, every week, and on demand.

Known limitations and follow-ups

  • #235: kernel receive drops on carrier-in above 3500 CPS. Calls still complete up to 4750 CPS.
  • #173: allocation per request on the signaling path.
  • No release signing yet. SHA256SUMS guards against corruption only.