v0.48.4

thevoiceguy/siphon-aiv0.48.4Aug 4, 2026by github-actions[bot]

Upgrading?

AI Summary

Fixes handling of BYE/ACK during delayed-offer pending window to prevent hanging calls and incorrect durations.

Key Highlights

  • BYE or body-less ACK during delayed-offer now ends call immediately
  • Fixes 32s hang on missing SDP answer
  • Adds `caller_hangup` result label to delayed-offer metric

Full Release Notes

### Fixed

- **A BYE or body-less ACK during the delayed-offer pending window now ends the call immediately** (issue #425). Between our 200-with-offer and the peer's ACK answer, an inbound delayed-offer call has a confirmed dialog but no controller yet — and both teardown signals fell into that gap: the routing handler dropped ACKs without a body before the acceptor could see them, and `dispatch_bye` consulted only the controller registry, so the peer's BYE got its RFC-mandated 200 while the parked call sat — forge session and ports held — until the Timer-H watchdog expired 32 s later and wrote a CDR claiming `ack_timeout` with a 32 s duration for a call the peer had ended in milliseconds (live shape: FreeSWITCH's gateway leg failing its own media setup sends exactly this empty-ACK + BYE pair 2 ms after our 200). Now every in-dialog ACK reaches the acceptor — a body-less one on a held dialog is the peer failing to answer our offer (RFC 3261 §13.2.2.4) and reaps the call as `missing_sdp_answer`, the outcome that was documented in the metric description and CDR schema since 0.9.5 but that no code path ever emitted — and the daemon installs the acceptor as the dialog terminator, so a BYE that misses the controller registry also checks the pending window and reaps the call with the ordinary `caller_hangup` cause and its real duration (CANCEL deliberately does not: RFC 3261 §9.2, no effect after a final response). `siphon_ai_delayed_offer_total` gains the `caller_hangup` result label; documented in DEPLOY.md.

---

**Artifacts**

- Static musl binaries for `x86_64` and `aarch64` (`.tar.gz`).
- Debian packages (`.deb`) for `amd64` and `arm64` — `apt install ./siphon-ai_*_amd64.deb`.
- `SHA256SUMS` — verify with `sha256sum -c SHA256SUMS`.
- `*-sbom.cdx.json` — CycloneDX SBOM.
- `SHA256SUMS.cosign.bundle` — cosign keyless signature over the checksums.
- Container: `ghcr.io/thevoiceguy/siphon-ai:v0.48.4` (multi-arch, cosign-signed).

Verify the checksums signature:
```
cosign verify-blob --bundle SHA256SUMS.cosign.bundle \
  --certificate-oidc-issuer https://token.actions.githubusercontent.com \
  --certificate-identity-regexp 'release.yml@' SHA256SUMS
```

Related Repositories