1
0
Fork 0
forked from External/mediamtx

rtsp source: fix memory leak in case source doesn't send H264 params in time

This commit is contained in:
aler9 2022-02-03 09:58:03 +01:00
parent 7c1d329d61
commit f6a5fe2623

View file

@ -328,19 +328,21 @@ func (s *rtspSource) handleMissingH264Params(c *gortsplib.Client, tracks gortspl
return err
}
waitError := make(chan error)
readErr := make(chan error)
go func() {
waitError <- c.Wait()
readErr <- c.Wait()
}()
timeout := time.NewTimer(15 * time.Second)
defer timeout.Stop()
select {
case err := <-waitError:
case err := <-readErr:
return err
case <-timeout.C:
c.Close()
<-readErr
return fmt.Errorf("source did not send H264 parameters in time")
case <-paramsReceived:
@ -354,6 +356,8 @@ func (s *rtspSource) handleMissingH264Params(c *gortsplib.Client, tracks gortspl
tracks: tracks,
})
if res.err != nil {
c.Close()
<-readErr
return res.err
}
@ -368,9 +372,9 @@ func (s *rtspSource) handleMissingH264Params(c *gortsplib.Client, tracks gortspl
defer func() {
s.parent.onSourceStaticSetNotReady(pathSourceStaticSetNotReadyReq{source: s})
}()
}
return <-waitError
return <-readErr
}
}
// onSourceAPIDescribe implements source.