From 4ac63ddfc6ffe8fb4a181b86841b3a3a5bbb4a57 Mon Sep 17 00:00:00 2001 From: ZGaetano Date: Sat, 9 May 2026 16:46:49 -0400 Subject: [PATCH] =?UTF-8?q?feat(whip):=20wire=20WHIPHandler=20into=20API?= =?UTF-8?q?=20=E2=80=94=20struct=20field,=20MergedHooks,=20NewWHIPHandler,?= =?UTF-8?q?=20serverConfig,=20cleanup?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/api/api.go | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/app/api/api.go b/app/api/api.go index 701349c..95a8dcd 100644 --- a/app/api/api.go +++ b/app/api/api.go @@ -76,6 +76,7 @@ type api struct { srtserver srt.Server webrtcsub *appwebrtc.Subsystem webrtchandler *appwebrtc.Handler + whiphandler *appwebrtc.WHIPHandler metrics monitor.HistoryMonitor prom prometheus.Metrics service service.Service @@ -632,9 +633,10 @@ func (a *api) start() error { if werr != nil { a.log.logger.core.Warn().WithError(werr).Log("WebRTC subsystem disabled: construction failed") } else { - a.restream.SetHooks(webrtcSub.Hooks()) + a.restream.SetHooks(webrtcSub.MergedHooks()) a.webrtcsub = webrtcSub a.webrtchandler = appwebrtc.NewHandler(webrtcSub, 0) + a.whiphandler = appwebrtc.NewWHIPHandler(webrtcSub, 0) } } @@ -1036,6 +1038,7 @@ func (a *api) start() error { RTMP: a.rtmpserver, SRT: a.srtserver, WebRTC: a.webrtchandler, + WHIP: a.whiphandler, JWT: a.httpjwt, Config: a.config.store, Sessions: a.sessions, @@ -1382,6 +1385,10 @@ func (a *api) stop() { a.webrtchandler.Close() a.webrtchandler = nil } + if a.whiphandler != nil { + a.whiphandler.Close() + a.whiphandler = nil + } if a.webrtcsub != nil { a.webrtcsub.Close() a.webrtcsub = nil