Releases: loreste/siprec
Releases · loreste/siprec
v1.2.0
Immutable
release. Only release title and notes can be modified.
What's New in v1.2.0
Cluster Module — Fully Wired
The cluster module is now fully integrated end-to-end. All features are wired into the SIP/RTP call lifecycle:
- RTP State Replication — Stream state (ports, codec, SSRC, stats) is registered in Redis on INVITE and unregistered on call teardown
- Distributed Tracing — Trace spans are created on SIP INVITE and completed on call finalization, with cross-node propagation via
X-Trace-ID/X-Span-IDheaders - Stream Migration — Active streams are automatically migrated to peer nodes during graceful shutdown
- Split-Brain Detection — Quorum-based partition detection with configurable fencing
- Distributed Rate Limiting — Cluster-wide CPS/CPM limits via Redis sorted sets with Lua scripts
- Leader Election — Redis-backed distributed lock with heartbeat and callbacks
Cluster Admin API
9 new endpoints under /api/cluster/:
| Endpoint | Description |
|---|---|
GET /api/cluster/status |
Full cluster status |
GET /api/cluster/nodes |
List all nodes |
GET /api/cluster/health |
Leader/quorum/fencing health |
POST /api/cluster/drain |
Graceful stream migration |
GET /api/cluster/migrations |
List pending migrations |
POST /api/cluster/migrations |
Initiate a migration |
GET /api/cluster/split-brain |
Partition detection status |
POST /api/cluster/split-brain/check |
Force quorum check |
GET /api/cluster/traces |
Query distributed traces |
GET /api/cluster/rtp-states |
List replicated RTP states |
Test Coverage
- 85+ new cluster tests covering all components with miniredis
- 18 leak detection tests for goroutine leaks, memory leaks, race conditions, and GC pressure
- 20 AMQP/STT leak detection tests for the messaging and transcription subsystems
- All tests pass with Go's
-racedetector
Bug Fixes
- Fix audio desync issues with buffered pipe, jitter buffer, and leg alignment
- Normalize bare LF to CRLF for non-compliant SIP devices (sipgo#292)
- Handle errors from
Close()calls in shutdown goroutines - Fix unhandled JSON encode/decode errors (G104)
- Fix SSRC validation and per-stream decoder issues
- G.729 DTX packet loss concealment
Dependencies
go.opentelemetry.io/otel/sdk1.40.0 → 1.43.0 (fixes BSD kenv PATH hijacking CVE)github.com/aws/aws-sdk-go-v2/service/transcribestreaming1.25.3 → 1.34.5google.golang.org/grpcupdated
Documentation
- Comprehensive wiki with 11 pages including new Clustering guide
- Updated security policy with accurate versions and reporting process
- Installation guide, audio pipeline docs, API reference