Repository navigation
FreeSBC v0.5.1
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 | shBreaking 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/latestredirect (no API call), and checks the tarball againstSHA256SUMS. - It installs
freesbcto/usr/local/bin, using sudo only when that directory is not writable. - As root on a systemd host, it also creates the
freesbcuser,/etc/freesbcand the unit. It does not enable or start the service, and it never overwrites an existing config. - Options:
--no-service,--dry-run,FREESBC_VERSIONto pin a tag,FREESBC_PREFIX. WithFREESBC_SWITCH,FREESBC_PRIVATE_IPandFREESBC_PUBLIC_IPset, it also writes the config withfreesbc init. SHA256SUMScomes from the same release, so the check catches a corrupted download, not a compromised release.
- It detects linux or darwin on amd64 or arm64, finds the latest tag from the
docs/install.md(new) now holds the manual download and checksum, building from source, the systemd layout andfreesbc.env, and thefreesbc initreference. The README's Install section is a short try-it-now block.
Performance
drainAcksstops 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
installjob inci.ymlrunssh -nand 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.ymlruns the script against the real releases onubuntu:24.04and macOS: after each release, every week, and on demand.