Get the code. Know what changed.
Download a tagged source archive, inspect what changed and choose the right starting point. Every download here comes directly from the official GitHub repository.
GABPBX 1.8.2
Released 8 September 2026 · GPLv2 · Source code
These archives contain source, not an installer. Build dependencies and configuration are required.
What is included?
- The tagged public source tree, sample configuration, build scripts and license notices.
- No .deb, .rpm, executable installer, VM image or ready-made web panel is attached to the current release.
- Sofia-SIP and optional library dependencies must be installed separately.
Release assets checked against the GitHub API on 2026-09-11.
Prefer Git? Pin the tag.
git clone --depth 1 --branch v1.8.2 https://github.com/garacil/gabpbx.git
cd gabpbx
git rev-parse HEADVerified tag target: 57bcb502e6bc789f8d0576becde18131189f5cb5. GitHub-generated archive bytes may change over time; no project-signed checksum is claimed here. Use the tag and commit to identify the source.
A closer look at every release.
All notes on GitHub ↗39 published releases reviewed. Summaries below describe the changes at the time of each release, not a recommendation to install an older version. Features introduced in the 1.6/1.7 development work are included in the published 1.8 series.
v1.8.2Mid-call network mobility
Updates ICE-lite nomination and DTLS handling so an established mobile call can follow a newly authenticated network path. Also corrects fork-cancellation reasons and User-Agent allow-list matching.
- Accept a new authenticated, nominated ICE pair during a call, allowing Wi-Fi/mobile-data handover without requiring a re-INVITE or ICE restart.
- Keep the selected media pair separate from the most recently authenticated connectivity check. Consent checks alone no longer redirect media.
- Retain the previously selected media path while an ICE restart negotiates its replacement.
- Remove the full-ICE priority tie-break from ICE-lite nomination and avoid acknowledging a nomination without actually selecting its pair.
- Accept DTLS from any tuple authenticated through ICE MESSAGE-INTEGRITY, rather than only the most recently checked tuple.
- Prevent an SDP connection address from overwriting the media destination selected by ICE.
- Place a=ice-lite at session level and emit and parse the ice2 option.
- Mark cancelled losing branches as completed elsewhere using SIP cause 200, both for multiple Dial channels and multiple registered contacts, independently of the Q.850 option.
- Apply lockuseragent against comma-separated configured prefixes. An empty list remains unrestricted; learned or truncated User-Agent values no longer cause unintended bans.
v1.8.1Native HTTP/2 push delivery
Adds an in-process push sender for APNs and FCM, with persistent HTTP/2 connections and cached authentication. Token deduplication recognises the same application installation across changing device identifiers.
- Send notifications through a bounded native queue and an event thread, supporting concurrent jobs and persistent APNs production, APNs sandbox and FCM connections.
- Sign and cache JWT/OAuth credentials with OpenSSL, avoiding a separate Python process for each notification on the native path.
- Select push_sender=native or script; native is the default and the selection is read again by sip reload.
- Fall back to the script path per job when native requirements are unavailable, including cURL HTTP/2 support, the cURL resource or readable provider credentials. The fallback still requires its script and credentials to be configured.
- Expose the active backend and pending queue depth through sip show push.
- Preserve the notification payload formats, invalid-token removal and push logging behaviour across both senders.
- Treat device rows in the same account that carry the same live push token as one application installation with a changed device identifier. Remove the stale row from the cache, store and log to avoid duplicate notifications.
v1.8.0Mobile calling and media correctness
Combines the preceding mobile-push development with fixes for calling your own other devices, SRTP bridging, RTP inactivity handling, attended transfer and DTLS timing. The public release list has no separate 1.6 or 1.7 release entries; that work is described here as included development.
- Allow a call to the same account to ring its other registered devices, excluding the originating binding using the INVITE source or +sip.instance.
- Exclude that originating device from push wake-up and resumed forking. busy_on_active ignores the caller's own binding while continuing to account for other busy devices.
- Use the generic bridge for SRTP-to-SRTP calls when the local relay path would reuse incompatible crypto and RTP stream state; regenerate the outgoing SSRC and sequence for the far side.
- Enforce rtptimeout, rtpholdtimeout and rtpkeepalive in the two-second maintenance sweep. Their default value of zero keeps them disabled; media that has never started and T.38 sessions are excluded from the inactivity check.
- Support attended REFER/Replaces when the consultation leg is an application such as IVR, echo, voicemail or a queue, including the three-channel transfer case.
- If DTLS finishes before the remote SDP fingerprint arrives, retain the completed handshake without installing media keys. Install keys only after fingerprint validation and reject a mismatch.
v1.5.18Control-frame signalling parity
Extends sofia_indicate handling for connected-line and redirecting updates, proceeding, flash and RTP-peer updates. Adds the supported connected-party and diversion signalling paths; Advice of Charge remains termination-only, not a new AOC-D/E sender.
v1.5.17Preserve hangup causes across bridges
Propagates the called channel's hangup cause to the caller after an answered bridged call ends, preserving an existing positive cause. This corrects cause-dependent dialplan decisions that could otherwise trigger an unintended retry.
v1.5.16Automatic BLF hints and reliable watchers
Creates BLF hints for configured peers, including unregistered peers, and materialises them when a subscription needs them. Context creation now updates the authoritative lookup table consistently, with matching subscribecontext/context fallback rules.
v1.5.15Presence routing and hold-state cleanup
Makes BLF SUBSCRIBE contacts routable for the watched extension, including subscription renewal. Releases hold-state accounting during teardown so a call ending or transferring while on hold does not leave the peer incorrectly busy.
v1.5.14Inspect the loaded Sofia-SIP version
Adds sip show version to report the build-time Sofia-SIP version, runtime version and resolved shared-library path. This helps diagnose mismatches between the library used to compile and the one loaded by the running process.
v1.5.13Close blacklisted-request handle leaks
Reclaims SIP handles when blacklisted out-of-dialog requests are dropped, extending the earlier OPTIONS-specific cleanup. This closes a resource-leak path that could accumulate memory under unwanted traffic.
v1.5.12Bounded queues and authentication hardening
Fixes OPTIONS handle cleanup, bounds DataChannel receive queues and makes unknown-user and bad-password rejection more consistent. Also hardens delayed rejects, nonce parsing, identity locking and malformed or out-of-dialog REFER handling.
v1.5.11Optional local hold re-INVITEs
Introduces the experimental, default-off hold_reinvite option for sendonly or inactive SDP during local hold, restoring the offer on unhold. The release notes explicitly distinguish this opt-in path from the established music-on-hold-only default and state that the enabled path was not end-to-end validated for that release.
v1.5.10Optional early media for a single remaining branch
Introduces experimental fork_early_media, disabled by default, for receive-only early media when forking narrows to one eligible non-WebRTC branch with SDP. It does not mix multiple early-media branches, and the release notes identify the enabled path as not yet end-to-end validated.
v1.5.9Q.850 reasons on rejected INVITEs
Extends the optional use_q850_reason setting to final INVITE rejection responses, in addition to BYE and CANCEL. The setting remains disabled by default.
v1.5.8SDP, progress, MWI and RTCP corrections
Expands SDP construction capacity and corrects progressinband handling after provisional signalling. Also aggregates additional message-waiting classes and selects RTCP report blocks for the actual local SSRC.
v1.5.7SRTP, concurrency and SDP robustness
Hardens SRTP key handling and rekey validation, protects shared transmit/codec state and corrects SDP ordering and media negotiation. Further fixes cover T.38 answers, video reoffers, fork codecs and registration-response binding.
v1.5.6Media security and transaction lifetime fixes
Removes sensitive SRTP key logging and tightens crypto-suite validation, with additional media and locking fixes. Corrects final responses for unanswered inbound INVITEs and binds UPDATE and NOTIFY handling to the proper transactions.
v1.5.5Explicit From-user overrides
Makes configured fromuser override the user part of the From URI rather than acting only as a fallback. Display-name and RPID/PAI behaviour are kept separate, with corrections for anonymous and user=phone routing.
v1.5.4Keep internal peer names out of caller identity
Stops From identity falling back to the internal peer or configuration-section name. The general callerid setting provides a final fallback, with gabpbx as its default.
v1.5.3Configured peer caller identity
Parses callerid names and numbers for static and realtime peers and adds apply_peer_callerid behaviour. Configured peer identity is applied by default unless a trusted RPID/PAI identity takes precedence.
v1.5.2Digest compatibility and its security trade-off
Adds auth_qop to control MD5 compatibility: the default legacy mode omits qop and its nonce-count replay protection, while enabling it uses nc/cnonce checks. SHA-256 continues to require qop=auth; deployments should assess the MD5 compatibility trade-off explicitly.
v1.5.1Consistent TLS defaults on reload
Corrects an inconsistent tls_min_version default that falsely reported a configuration change on reload. TLS 1.2 is used consistently as the default; a real listener TLS change still requires a restart.
v1.5.0SIP and WebRTC video bridging
Adds video bridging between SIP and WebRTC using compatible codecs, including H.264 negotiation and keyframe-request translation, without video transcoding. Also improves media-state retention on reoffers, optional DTMF diagnostics and safe module-unload refusal.
v1.4.3Separate signalling and media NAT settings
Separates force_rport for SIP response routing from comedia for symmetric media learning. Peers inherit the general nat setting when their own setting is absent or empty, including realtime records.
v1.4.2WebRTC hold and resume
Corrects WebRTC hold/resume offer-answer direction and media-line handling while preserving stream identity and payload mappings. Adds the appropriate RTCP keyframe-feedback negotiation and relay, without introducing video transcoding.
v1.4.1Fork-winner media and native SIP messaging
Fixes socket cleanup that could starve media after a WebRTC fork winner was selected. Adds authenticated native SIP MESSAGE relay to live peer contacts, with offline responses and an optional message_context fallback.
v1.4.0WebRTC BUNDLE, DTMF and contact registration
Introduces optional WebRTC BUNDLE and improves DTMF handling and per-contact REGISTER expiry/removal. The release also changes early media-path selection and adds opt-in diagnostics; later releases, particularly 1.8.2, refine ICE nomination behaviour.
v1.3.5Inbound WebRTC audio and SDP diagnostics
Corrects inbound browser-offer handling, ICE role-conflict responses and DTLS sequencing before fingerprint validation. Adds SDP diagnostics and transaction identifiers, and avoids treating a failed video stream as an audio-call failure.
v1.3.4Transport-flow cleanup and peer inspection
Removes bindings promptly when their RFC 5626 transport flow closes, with optional unregister events. Improves peer CLI output and hardens T.140 RED buffer handling.
v1.3.3WebRTC registration and NAT media fixes
Uses the real WebSocket transport for registered contacts and improves browser-reload rebinding. Clarifies ICE ownership of WebRTC media routing instead of applying comedia learning; later releases further revise nomination details.
v1.3.2Digest nonces and contact rebinding
Introduces stateless authenticated nonces with a bounded per-nonce replay cache to avoid authentication loops. Improves source-aware response routing and contact rebinding using SIP instance identifiers, Call-ID and conservative NAT fallbacks.
v1.3.1Transport-aware media and NAT routing
Selects media profiles from each contact's actual transport, distinguishing WebRTC DTLS-SRTP from ordinary SIP transport. Corrects initial outbound routing towards learned NAT endpoints and adds configurable blacklist-ban duration.
v1.3XXH3 hashing and hash-table diagnostics
Replaces core string hashing with an embedded XXH3-64 implementation, retunes hash-table bucket sizes and adds core test hash for local measurements. Restricts the source-IP trunk index to static-host trunks to avoid ambiguous identification behind shared NAT.
v1.2.2Realtime trunk and registration fixes
Matches uncached realtime IP trunks by source IP and port, and uses the configured authentication username in Digest checks. Adjusts REGISTER nonce-count handling for phones that restart their count, while retaining stricter checks for non-idempotent methods.
v1.2.1RTP, text and DataChannel hardening
Strengthens RTCP report parsing, T.140 redundancy bounds, DTMF packet validation and DTLS fingerprint checks. Also sanitises User-Agent content in AMI events and bounds DataChannel receive buffers.
v1.2SIP and WebRTC security hardening
Hardens Digest checks and out-of-dialog MESSAGE authentication, DTLS-SRTP validation and DataChannel sequencing. Further changes validate SDP offer/answer structure and tighten subscription, RTCP-mux and SIP routing behaviour; subsequent releases refine compatibility and replay handling.
v1.1.2Two-way WebRTC video and transport fixes
Adds two-way WebRTC video with compatible VP8/H.264 negotiation and Opus passthrough, alongside expanded feature documentation. Corrects static and realtime trunk requests that previously ignored their configured TLS/TCP/WS/WSS transport.
v1.1.1Expanded Sofia-SIP channel capabilities
Expands trunk registration, SIP Outbound/Path/GRUU, provisional responses, presence, MWI, transfer and diagnostic capabilities while retaining the established SIP-facing interfaces. Adds configurable TLS hardening and reorganises the driver into subsystem files, with concurrency and lifetime fixes.
v1.1Modular Sofia-SIP driver
Splits the channel driver into cohesive Sofia subsystem files while retaining a single loadable module. Adds presence publication, registration authentication, transport keepalive, TLS controls and operational CLI commands, alongside concurrency fixes.
v1.0First tagged public release
Publishes the initial tagged chan_sofia baseline, preserving the SIP channel technology, familiar CLI/AMI interfaces, realtime peers and dialplan functions. Its release work focuses on registration, calls and media capabilities plus locking, teardown and reload correctness; migration still requires build, dependency and configuration checks.
Some older references are historical. In particular, CHANGELOG.md does not enumerate the current releases completely; the release pages, CHANGES, the wiki and the implementation are the references used for this refresh.