<p>George Joseph <strong>merged</strong> this change.</p><p><a href="https://gerrit.asterisk.org/10438">View Change</a></p><div style="white-space:pre-wrap">Approvals:
  Corey Farrell: Looks good to me, but someone else must approve
  George Joseph: Looks good to me, approved; Approved for Submit

</div><pre style="font-family: monospace,monospace; white-space: pre-wrap;">func_periodic_hook.c: Cleanup module resources on failure.<br><br>* Make load_module() cleanup if it failed to setup the module.<br><br>* Make unload_module() always return 0.  It is silly to fail unloading if<br>the hook function we try to unregister was not even registered.<br><br>Change-Id: I280fc6e8ba2a7ee2588ca01d870eebaf74b4ffe6<br>---<br>M funcs/func_periodic_hook.c<br>1 file changed, 15 insertions(+), 10 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/funcs/func_periodic_hook.c b/funcs/func_periodic_hook.c</span><br><span>index 1f66747..31c534c 100644</span><br><span>--- a/funcs/func_periodic_hook.c</span><br><span>+++ b/funcs/func_periodic_hook.c</span><br><span>@@ -446,7 +446,8 @@</span><br><span> {</span><br><span>    ast_context_destroy(NULL, AST_MODULE);</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-      return ast_custom_function_unregister(&hook_function);</span><br><span style="color: hsl(120, 100%, 40%);">+    ast_custom_function_unregister(&hook_function);</span><br><span style="color: hsl(120, 100%, 40%);">+   return 0;</span><br><span> }</span><br><span> </span><br><span> static int load_module(void)</span><br><span>@@ -461,32 +462,36 @@</span><br><span>   /*</span><br><span>    * Based on a handy recipe from the Asterisk Cookbook.</span><br><span>        */</span><br><span style="color: hsl(0, 100%, 40%);">-     ast_add_extension(context_name, 1, exten_name, 1, "", "",</span><br><span style="color: hsl(120, 100%, 40%);">+ res = ast_add_extension(context_name, 1, exten_name, 1, "", "",</span><br><span>                  "Set", "EncodedChannel=${CUT(HOOK_CHANNEL,-,1-2)}",</span><br><span>                      NULL, AST_MODULE);</span><br><span style="color: hsl(0, 100%, 40%);">-      ast_add_extension(context_name, 1, exten_name, 2, "", "",</span><br><span style="color: hsl(120, 100%, 40%);">+ res |= ast_add_extension(context_name, 1, exten_name, 2, "", "",</span><br><span>                         "Set", "GROUP_NAME=${EncodedChannel}${HOOK_ID}",</span><br><span>                         NULL, AST_MODULE);</span><br><span style="color: hsl(0, 100%, 40%);">-      ast_add_extension(context_name, 1, exten_name, 3, "", "",</span><br><span style="color: hsl(120, 100%, 40%);">+ res |= ast_add_extension(context_name, 1, exten_name, 3, "", "",</span><br><span>                         "Set", "GROUP(periodic-hook)=${GROUP_NAME}",</span><br><span>                     NULL, AST_MODULE);</span><br><span style="color: hsl(0, 100%, 40%);">-      ast_add_extension(context_name, 1, exten_name, 4, "", "", "ExecIf",</span><br><span style="color: hsl(120, 100%, 40%);">+     res |= ast_add_extension(context_name, 1, exten_name, 4, "", "", "ExecIf",</span><br><span>                     "$[${GROUP_COUNT(${GROUP_NAME}@periodic-hook)} > 1]?Hangup()",</span><br><span>                  NULL, AST_MODULE);</span><br><span style="color: hsl(0, 100%, 40%);">-      ast_add_extension(context_name, 1, exten_name, 5, "", "",</span><br><span style="color: hsl(120, 100%, 40%);">+ res |= ast_add_extension(context_name, 1, exten_name, 5, "", "",</span><br><span>                         "Set", "ChannelToSpy=${URIDECODE(${EncodedChannel})}",</span><br><span>                   NULL, AST_MODULE);</span><br><span style="color: hsl(0, 100%, 40%);">-      ast_add_extension(context_name, 1, exten_name, 6, "", "",</span><br><span style="color: hsl(120, 100%, 40%);">+ res |= ast_add_extension(context_name, 1, exten_name, 6, "", "",</span><br><span>                         "ChanSpy", "${ChannelToSpy},qEB", NULL, AST_MODULE);</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    res = ast_add_extension(context_name, 1, beep_exten, 1, "", "",</span><br><span style="color: hsl(120, 100%, 40%);">+   res |= ast_add_extension(context_name, 1, beep_exten, 1, "", "",</span><br><span>                         "Answer", "", NULL, AST_MODULE);</span><br><span>         res |= ast_add_extension(context_name, 1, beep_exten, 2, "", "",</span><br><span>                         "Playback", "beep", NULL, AST_MODULE);</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-  res = ast_custom_function_register_escalating(&hook_function, AST_CFE_BOTH);</span><br><span style="color: hsl(120, 100%, 40%);">+      res |= ast_custom_function_register_escalating(&hook_function, AST_CFE_BOTH);</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-   return res ? AST_MODULE_LOAD_DECLINE : AST_MODULE_LOAD_SUCCESS;</span><br><span style="color: hsl(120, 100%, 40%);">+       if (res) {</span><br><span style="color: hsl(120, 100%, 40%);">+            unload_module();</span><br><span style="color: hsl(120, 100%, 40%);">+              return AST_MODULE_LOAD_DECLINE;</span><br><span style="color: hsl(120, 100%, 40%);">+       }</span><br><span style="color: hsl(120, 100%, 40%);">+     return AST_MODULE_LOAD_SUCCESS;</span><br><span> }</span><br><span> </span><br><span> int AST_OPTIONAL_API_NAME(ast_beep_start)(struct ast_channel *chan,</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.asterisk.org/10438">change 10438</a>. To unsubscribe, or for help writing mail filters, visit <a href="https://gerrit.asterisk.org/settings">settings</a>.</p><div itemscope itemtype="http://schema.org/EmailMessage"><div itemscope itemprop="action" itemtype="http://schema.org/ViewAction"><link itemprop="url" href="https://gerrit.asterisk.org/10438"/><meta itemprop="name" content="View Change"/></div></div>

<div style="display:none"> Gerrit-Project: asterisk </div>
<div style="display:none"> Gerrit-Branch: 16 </div>
<div style="display:none"> Gerrit-MessageType: merged </div>
<div style="display:none"> Gerrit-Change-Id: I280fc6e8ba2a7ee2588ca01d870eebaf74b4ffe6 </div>
<div style="display:none"> Gerrit-Change-Number: 10438 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: Richard Mudgett <rmudgett@digium.com> </div>
<div style="display:none"> Gerrit-Reviewer: Corey Farrell <git@cfware.com> </div>
<div style="display:none"> Gerrit-Reviewer: George Joseph <gjoseph@digium.com> </div>
<div style="display:none"> Gerrit-Reviewer: Jenkins2 (1000185) </div>