Skip to content

[improvement]: app_mixmonitor: Prevent MixMonitor from recording to the same file multiple times #1512

@InterLinked1

Description

@InterLinked1

Improvement Description

It is possible to hose an Asterisk system simply by accidentally making a MixMonitor call in a loop. Multiple simultaneous recordings are permitted; however, we can prevent this by preventing attempts to record multiple times to the same file:

    -- Executing [s@mm:2] MixMonitor("Local/s@mm-00000001;2", "/tmp/test.wav") in new stack
    -- Executing [s@mm:3] Set("Local/s@mm-00000001;2", "i=988") in new stack
  == Begin MixMonitor Recording Local/s@mm-00000001;2
    -- Executing [s@mm:4] Wait("Local/s@mm-00000001;2", "0.01") in new stack
    -- Executing [s@mm:5] Goto("Local/s@mm-00000001;2", "s,2") in new stack
    -- Goto (mm,s,2)
    -- Executing [s@mm:2] MixMonitor("Local/s@mm-00000001;2", "/tmp/test.wav") in new stack
  == Begin MixMonitor Recording Local/s@mm-00000001;2
    -- Executing [s@mm:3] Set("Local/s@mm-00000001;2", "i=989") in new stack
    -- Executing [s@mm:4] Wait("Local/s@mm-00000001;2", "0.01") in new stack
    -- Executing [s@mm:5] Goto("Local/s@mm-00000001;2", "s,2") in new stack
    -- Goto (mm,s,2)
    -- Executing [s@mm:2] MixMonitor("Local/s@mm-00000001;2", "/tmp/test.wav") in new stack
    -- Executing [s@mm:3] Set("Local/s@mm-00000001;2", "i=990") in new stack
  == Begin MixMonitor Recording Local/s@mm-00000001;2
    -- Executing [s@mm:4] Wait("Local/s@mm-00000001;2", "0.01") in new stack
    -- Executing [s@mm:5] Goto("Local/s@mm-00000001;2", "s,2") in new stack
    -- Goto (mm,s,2)
    -- Executing [s@mm:2] MixMonitor("Local/s@mm-00000001;2", "/tmp/test.wav") in new stack
  == Begin MixMonitor Recording Local/s@mm-00000001;2
[Oct  5 00:22:06] WARNING[861406][C-00000002]: file.c:1588 ast_writefile: Unable to open file /tmp/test.wav: Too many open files
[Oct  5 00:22:06] ERROR[861406][C-00000002]: app_mixmonitor.c:740 mixmonitor_save_prep: Cannot open /tmp/test.wav
    -- Executing [s@mm:3] Set("Local/s@mm-00000001;2", "i=991") in new stack
    -- Executing [s@mm:4] Wait("Local/s@mm-00000001;2", "0.01") in new stack
    -- Executing [s@mm:5] Goto("Local/s@mm-00000001;2", "s,2") in new stack
    -- Goto (mm,s,2)
    -- Executing [s@mm:2] MixMonitor("Local/s@mm-00000001;2", "/tmp/test.wav") in new stack
  == Begin MixMonitor Recording Local/s@mm-00000001;2
[Oct  5 00:22:06] WARNING[861407][C-00000002]: file.c:1588 ast_writefile: Unable to open file /tmp/test.wav: Too many open files
[Oct  5 00:22:06] ERROR[861407][C-00000002]: app_mixmonitor.c:740 mixmonitor_save_prep: Cannot open /tmp/test.wav
    -- Executing [s@mm:3] Set("Local/s@mm-00000001;2", "i=992") in new stack
    -- Executing [s@mm:4] Wait("Local/s@mm-00000001;2", "0.01") in new stack
    -- Executing [s@mm:5] Goto("Local/s@mm-00000001;2", "s,2") in new stack
    -- Goto (mm,s,2)
    -- Executing [s@mm:2] MixMonitor("Local/s@mm-00000001;2", "/tmp/test.wav") in new stack
  == Begin MixMonitor Recording Local/s@mm-00000001;2
[Oct  5 00:22:06] WARNING[861408][C-00000002]: file.c:1588 ast_writefile: Unable to open file /tmp/test.wav: Too many open files
[Oct  5 00:22:06] ERROR[861408][C-00000002]: app_mixmonitor.c:740 mixmonitor_save_prep: Cannot open /tmp/test.wav

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions