From 42ba83245b89617930d6dcf0383c76face2e872b Mon Sep 17 00:00:00 2001 From: aler9 <46489434+aler9@users.noreply.github.com> Date: Sat, 31 Oct 2020 12:16:53 +0100 Subject: [PATCH] decrease memory usage --- client/client.go | 11 +++++++++++ sourcertmp/source.go | 2 ++ sourcertsp/source.go | 3 +++ 3 files changed, 16 insertions(+) diff --git a/client/client.go b/client/client.go index 613d66d4..cae12fe0 100644 --- a/client/client.go +++ b/client/client.go @@ -832,6 +832,8 @@ func (c *Client) handleRequest(req *base.Request) error { func (c *Client) runInitial() bool { readDone := make(chan error) go func() { + defer close(readDone) + for { req, err := c.conn.ReadRequest() if err != nil { @@ -959,6 +961,8 @@ func (c *Client) runPlay() bool { func (c *Client) runPlayUDP() { readDone := make(chan error) go func() { + defer close(readDone) + for { req, err := c.conn.ReadRequest() if err != nil { @@ -998,6 +1002,8 @@ func (c *Client) runPlayTCP() { readDone := make(chan error) go func() { + defer close(readDone) + for { recv, err := c.conn.ReadFrameTCPOrRequest(false) if err != nil { @@ -1026,6 +1032,7 @@ func (c *Client) runPlayTCP() { // responses must be written in the same routine of frames case req := <-readRequest: req.res <- c.handleRequest(req.req) + close(req.res) case err := <-readDone: c.conn.Close() @@ -1143,6 +1150,8 @@ func (c *Client) runRecord() bool { func (c *Client) runRecordUDP() { readDone := make(chan error) go func() { + defer close(readDone) + for { req, err := c.conn.ReadRequest() if err != nil { @@ -1217,6 +1226,8 @@ func (c *Client) runRecordTCP() { readDone := make(chan error) go func() { + defer close(readDone) + for { recv, err := c.conn.ReadFrameTCPOrRequest(true) if err != nil { diff --git a/sourcertmp/source.go b/sourcertmp/source.go index f169739d..b95490ef 100644 --- a/sourcertmp/source.go +++ b/sourcertmp/source.go @@ -270,6 +270,8 @@ func (s *Source) runInnerInner() bool { readDone := make(chan error) go func() { + defer close(readDone) + for { pkt, err := conn.ReadPacket() if err != nil { diff --git a/sourcertsp/source.go b/sourcertsp/source.go index d29f0ecf..709de9c6 100644 --- a/sourcertsp/source.go +++ b/sourcertsp/source.go @@ -253,6 +253,7 @@ func (s *Source) runUDP(u *url.URL, conn *gortsplib.ConnClient, tracks gortsplib tcpConnDone := make(chan error) go func() { + defer close(tcpConnDone) tcpConnDone <- conn.LoopUDP() }() @@ -304,6 +305,8 @@ func (s *Source) runTCP(u *url.URL, conn *gortsplib.ConnClient, tracks gortsplib tcpConnDone := make(chan error) go func() { + defer close(tcpConnDone) + for { trackId, streamType, content, err := conn.ReadFrameTCP() if err != nil {