[asterisk-dev] [Code Review] 3424: mixmonitor: Add option to enable a periodic beep
Russell Bryant
reviewboard at asterisk.org
Fri Apr 11 20:42:51 CDT 2014
> On April 10, 2014, 3:35 p.m., Mark Michelson wrote:
> > /trunk/apps/app_mixmonitor.c, line 1067
> > <https://reviewboard.asterisk.org/r/3424/diff/2/?file=57155#file57155line1067>
> >
> > Suggestion:
> >
> > Instead of doing ast_module_check(), use ast_custom_function_find() to find the PERIODIC_HOOK function. I have a couple of reasons for this:
> >
> > 1) Currently, if func_periodic_hook.so is loaded, it also means that PERIODIC_HOOK is registered, but that assumption may not always hold.
> >
> > 2) More importantly, getting the ast_custom_function allows for you to bump the module refcount for func_periodic_hook.so so that the module cannot be unloaded while there is an active mixmonitor. You can decrement the module refcount when the mixmonitor is destroyed.
I started looking at this, but I'm not sure the alternative is better. They both have downsides. ast_custom_function_find() may be worse.
Re: #1, you're right, but ...
Re: #2, the module ref count is now always incremented on func_periodic_hook.so when PERIODIC_HOOK() is active. Also, it looks like ast_custom_function_find() isn't safe. There is a race condition between finding a function and incrementing the module ref count where the module could be unloaded and cause a crash. At least with ast_module_check(), ast_func_read() may fail, but it's handled gracefully without crashing.
- Russell
-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviewboard.asterisk.org/r/3424/#review11562
-----------------------------------------------------------
On April 8, 2014, 7:49 p.m., Russell Bryant wrote:
>
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviewboard.asterisk.org/r/3424/
> -----------------------------------------------------------
>
> (Updated April 8, 2014, 7:49 p.m.)
>
>
> Review request for Asterisk Developers.
>
>
> Repository: Asterisk
>
>
> Description
> -------
>
> Add an option to enable a periodic beep to be played into a call if it
> is being recorded. If enabled, it uses the PERIODIC_HOOK() function
> internally to play the 'beep' prompt into the call at a specified
> interval.
>
>
> Diffs
> -----
>
> /trunk/main/app.c 412023
> /trunk/include/asterisk/app.h 412023
> /trunk/funcs/func_periodic_hook.c 412023
> /trunk/apps/app_mixmonitor.c 412023
> /trunk/CHANGES 412023
>
> Diff: https://reviewboard.asterisk.org/r/3424/diff/
>
>
> Testing
> -------
>
> exten => 103,1,Answer()
> same => n,MixMonitor(test.gsm,B(5))
> same => n,MusicOnHold()
>
> exten => 104,1,Answer()
> same => n,MixMonitor(test.gsm,B)
> same => n,MusicOnHold()
>
> exten => 105,1,Answer()
> same => n,MixMonitor(test.gsm,B(3))
> same => n,StartMusicOnHold()
> same => n,Wait(15)
> same => n,StopMusicOnHold()
> same => n,StopMixMonitor()
> same => n,Wait(5)
> same => n,Hangup()
>
>
> Thanks,
>
> Russell Bryant
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.digium.com/pipermail/asterisk-dev/attachments/20140412/fd5195ab/attachment.html>
More information about the asterisk-dev
mailing list