From 24ca87e00d4d5be424de97ebd7a1f1eead8adb87 Mon Sep 17 00:00:00 2001 From: seydx Date: Sun, 1 Jun 2025 18:40:53 +0300 Subject: [PATCH] dont fallback to tcp if udp failes --- pkg/rtsp/client.go | 15 ++++++--------- pkg/rtsp/conn.go | 6 +----- pkg/rtsp/consumer.go | 2 +- 3 files changed, 8 insertions(+), 15 deletions(-) diff --git a/pkg/rtsp/client.go b/pkg/rtsp/client.go index ef5ebbfe..3d1bb0df 100644 --- a/pkg/rtsp/client.go +++ b/pkg/rtsp/client.go @@ -52,10 +52,8 @@ func (c *Conn) Dial() (err error) { if c.Transport != "udp" { c.Protocol = "rtsp+tcp" - c.transportMode = TransportTCP } else { c.Protocol = "rtsp+udp" - c.transportMode = TransportUDP } } else { conn, err = websocket.Dial(c.Transport) @@ -245,14 +243,13 @@ func (c *Conn) SetupMedia(media *core.Media) (byte, error) { return 0, fmt.Errorf("wrong media: %v", media) } - if c.transportMode == TransportUDP { + if c.Transport == "udp" { transport, err := c.setupUDPTransport() - if err == nil { - return c.sendSetupRequest(media, transport) + if err != nil { + return 0, err } - // Fall back to TCP if UDP fails - c.closeUDP() - c.transportMode = TransportTCP + + return c.sendSetupRequest(media, transport) } transport = c.setupTCPTransport(mediaIndex) @@ -344,7 +341,7 @@ func (c *Conn) sendSetupRequest(media *core.Media, transport string) (byte, erro // Parse server response responseTransport := res.Header.Get("Transport") - if c.transportMode == TransportUDP { + if c.Transport == "udp" { // Parse UDP response: client_ports=1234-1235;server_port=1234-1235 var clientPorts []int var serverPorts []int diff --git a/pkg/rtsp/conn.go b/pkg/rtsp/conn.go index a5f001c2..ddb15a74 100644 --- a/pkg/rtsp/conn.go +++ b/pkg/rtsp/conn.go @@ -49,8 +49,6 @@ type Conn struct { state State stateMu sync.Mutex - transportMode TransportMode - // UDP udpRtpConns map[byte]*UDPConnection @@ -69,8 +67,6 @@ type UDPConnection struct { type TransportMode int const ( - TransportTCP TransportMode = iota - TransportUDP ReceiveMTU = 1500 ) @@ -161,7 +157,7 @@ func (c *Conn) Handle() (err error) { return } - if c.transportMode == TransportUDP { + if c.Transport == "udp" { if err = c.handleUDPClientData(time); err != nil { return err } diff --git a/pkg/rtsp/consumer.go b/pkg/rtsp/consumer.go index b5827436..fde2684c 100644 --- a/pkg/rtsp/consumer.go +++ b/pkg/rtsp/consumer.go @@ -87,7 +87,7 @@ func (c *Conn) packetWriter(codec *core.Codec, channel, payloadType uint8) core. flushBuf := func() { //log.Printf("[rtsp] channel:%2d write_size:%6d buffer_size:%6d", channel, n, len(buf)) - if c.transportMode == TransportUDP { + if c.Transport == "udp" { if err := c.sendUDPRtpPacket(buf[:n]); err == nil { c.Send += n }