fix: ensure that video buffers are empty before closing channels
This commit is contained in:
@@ -36,6 +36,10 @@ func New(video *h264video.Video, cfg *config.Config) (*FileWrite, error) {
|
||||
|
||||
// Run launches the commands and begins creating data. It will block until Done is called.
|
||||
func (v *FileWrite) Run() {
|
||||
if v.cfg.LocalCopy == "" {
|
||||
// Feature is disabled; close right away
|
||||
return
|
||||
}
|
||||
// Confirm that the target directory is a directory
|
||||
stat, err := os.Stat(v.cfg.LocalCopy)
|
||||
log := log.With().Str("directory", v.cfg.LocalCopy).Logger()
|
||||
|
||||
@@ -139,6 +139,13 @@ func (v *Video) Join() (<-chan []byte, string, func()) {
|
||||
v.mu.Lock()
|
||||
defer v.mu.Unlock()
|
||||
|
||||
// Close the channel
|
||||
close(v.ivfListeners[myID])
|
||||
// Consume any pending frames
|
||||
for _ := range v.ivfListeners[myID] {
|
||||
// do nothing
|
||||
}
|
||||
|
||||
delete(v.ivfListeners, myID)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user