Skip to content

Releases: loreste/siprec

v1.2.0

10 Apr 17:17
Immutable release. Only release title and notes can be modified.

Choose a tag to compare

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-ID headers
  • 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 -race detector

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/sdk 1.40.0 → 1.43.0 (fixes BSD kenv PATH hijacking CVE)
  • github.com/aws/aws-sdk-go-v2/service/transcribestreaming 1.25.3 → 1.34.5
  • google.golang.org/grpc updated

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