From da08d8e973e053072f16f23c8af42b50a68fe611 Mon Sep 17 00:00:00 2001 From: Alexey Khit Date: Sun, 16 Apr 2023 14:47:49 +0300 Subject: [PATCH] Fix RTSP backchannel processing --- pkg/rtsp/consumer.go | 7 +++++++ pkg/rtsp/producer.go | 5 +++++ 2 files changed, 12 insertions(+) diff --git a/pkg/rtsp/consumer.go b/pkg/rtsp/consumer.go index 7f7fece2..78182f97 100644 --- a/pkg/rtsp/consumer.go +++ b/pkg/rtsp/consumer.go @@ -7,6 +7,7 @@ import ( "github.com/AlexxIT/go2rtc/pkg/h265" "github.com/AlexxIT/go2rtc/pkg/mjpeg" "github.com/pion/rtp" + "time" ) func (c *Conn) GetMedias() []*core.Media { @@ -41,6 +42,8 @@ func (c *Conn) AddTrack(media *core.Media, codec *core.Codec, track *core.Receiv return } + c.state = StateSetup + case core.ModePassiveConsumer: channel = byte(len(c.senders)) * 2 @@ -85,6 +88,10 @@ func (c *Conn) packetWriter(codec *core.Codec, channel uint8) core.HandlerFunc { return } + if err := c.conn.SetWriteDeadline(time.Now().Add(Timeout)); err != nil { + return + } + n, err := c.conn.Write(data) if err != nil { return diff --git a/pkg/rtsp/producer.go b/pkg/rtsp/producer.go index f7772c54..0cd5efc7 100644 --- a/pkg/rtsp/producer.go +++ b/pkg/rtsp/producer.go @@ -130,6 +130,11 @@ func (c *Conn) Reconnect() error { return err } } + for _, sender := range c.senders { + if _, err := c.SetupMedia(sender.Media); err != nil { + return err + } + } return nil }