From 21207382c8d44b89259131b24c6c9321c5452ce3 Mon Sep 17 00:00:00 2001 From: winlin Date: Thu, 5 Sep 2024 19:48:57 +0800 Subject: [PATCH] Support SRT listen ep in UDP. --- proxy/rtc.go | 2 +- proxy/srt.go | 11 ++++------- 2 files changed, 5 insertions(+), 8 deletions(-) diff --git a/proxy/rtc.go b/proxy/rtc.go index 75c1a9f5ab..f63963de30 100644 --- a/proxy/rtc.go +++ b/proxy/rtc.go @@ -432,7 +432,7 @@ func (v *RTCConnection) connectBackend(ctx context.Context) error { _, _, udpPort, err := parseListenEndpoint(backend.RTC[0]) if err != nil { - return errors.Wrapf(err, "parse endpoint %v", backend.RTC[0]) + return errors.Wrapf(err, "parse udp port %v of %v for %v", backend.RTC[0], backend, v.StreamURL) } // Connect to backend SRS server via UDP client. diff --git a/proxy/srt.go b/proxy/srt.go index 3e2b651487..758081117b 100644 --- a/proxy/srt.go +++ b/proxy/srt.go @@ -9,7 +9,6 @@ import ( "encoding/binary" "fmt" "net" - "strconv" "strings" stdSync "sync" "time" @@ -351,16 +350,14 @@ func (v *SRTConnection) connectBackend(ctx context.Context, streamID string) err return errors.Errorf("no udp server %v for %v", backend, streamURL) } - var udpPort int - if iv, err := strconv.ParseInt(backend.SRT[0], 10, 64); err != nil { + _, _, udpPort, err := parseListenEndpoint(backend.SRT[0]) + if err != nil { return errors.Wrapf(err, "parse udp port %v of %v for %v", backend.SRT[0], backend, streamURL) - } else { - udpPort = int(iv) } // Connect to backend SRS server via UDP client. - // TODO: FIXME: Support close the connection when timeout or DTLS alert. - backendAddr := net.UDPAddr{IP: net.ParseIP(backend.IP), Port: udpPort} + // TODO: FIXME: Support close the connection when timeout or client disconnected. + backendAddr := net.UDPAddr{IP: net.ParseIP(backend.IP), Port: int(udpPort)} if backendUDP, err := net.DialUDP("udp", nil, &backendAddr); err != nil { return errors.Wrapf(err, "dial udp to %v of %v for %v", backendAddr, backend, streamURL) } else {