From a49b4e2ff7fb99f19552b9b5efc1a688cd07b730 Mon Sep 17 00:00:00 2001 From: yangjiechina <1534796060@qq.com> Date: Thu, 14 Nov 2024 19:44:45 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8B=89=E6=B5=81=E8=B6=85=E6=97=B6=EF=BC=8C?= =?UTF-8?q?=E6=96=AD=E5=BC=80=E8=BF=9E=E6=8E=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- stream/source.go | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/stream/source.go b/stream/source.go index ad76b07..a32b4d6 100644 --- a/stream/source.go +++ b/stream/source.go @@ -348,11 +348,13 @@ func (s *PublishSource) write(sink Sink, index int, data [][]byte, timestamp int //return } - // 内核发送缓冲区满, 清空sink的发送缓冲区, 等下次关键帧时再尝试发送。 - //_, ok := err.(*transport.ZeroWindowSizeError) - //if ok { - // conn, ok := sink.GetConn().(*transport.Conn) - //} + // 推流失败, 可能是服务器或拉流端带宽不够、拉流端不读取数据等情况造成内核发送缓冲区满, 进而阻塞. + // 直接关闭连接. 当然也可以将sink先挂起, 后续再继续推流. + _, ok := err.(*transport.ZeroWindowSizeError) + if ok { + log.Sugar.Errorf("向sink推流超时,关闭连接. sink: %s", sink.GetID()) + sink.Close() + } } // 创建sink需要的输出流