<html>
 <body>
  <div style="font-family: Verdana, Arial, Helvetica, Sans-Serif;">
   <table bgcolor="#f9f3c9" width="100%" cellpadding="8" style="border: 1px #c9c399 solid;">
    <tr>
     <td>
      This is an automatically generated e-mail. To reply, visit:
      <a href="https://reviewboard.asterisk.org/r/2763/">https://reviewboard.asterisk.org/r/2763/</a>
     </td>
    </tr>
   </table>
   <br />










<blockquote style="margin-left: 1em; border-left: 2px solid #d0d0d0; padding-left: 10px;">
 <p style="margin-top: 0;">On August 16th, 2013, 9:37 p.m. UTC, <b>rmudgett</b> wrote:</p>
 <blockquote style="margin-left: 1em; border-left: 2px solid #d0d0d0; padding-left: 10px;">
  



<table width="100%" border="0" bgcolor="white" style="border: 1px solid #C0C0C0; border-collapse: collapse; margin: 2px padding: 2px;">
 <thead>
  <tr>
   <th colspan="4" bgcolor="#F0F0F0" style="border-bottom: 1px solid #C0C0C0; font-size: 9pt; padding: 4px 8px; text-align: left;">
    <a href="https://reviewboard.asterisk.org/r/2763/diff/6/?file=44123#file44123line229" style="color: black; font-weight: bold; text-decoration: underline;">/main/parking.c</a>
    <span style="font-weight: normal;">

     (Diff revision 6)

    </span>
   </th>
  </tr>
 </thead>

 <tbody style="background-color: #e4d9cb; padding: 4px 8px; text-align: center;">
  <tr>

   <td colspan="4"><pre style="font-size: 8pt; line-height: 140%; margin: 0; ">struct ast_parked_call_payload *ast_parked_call_payload_create(enum ast_parked_call_event_type event_type,</pre></td>

  </tr>
 </tbody>



 
 

 <tbody>

  <tr>
    <th bgcolor="#f0f0f0" style="border-right: 1px solid #C0C0C0;" align="right"><font size="2">170</font></th>
    <td bgcolor="#ffffff" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "><span class="tb">        </span><span class="tb">        </span><span class="n">ast_log</span><span class="p">(</span><span class="n">AST_LOG_WARNING</span><span class="p">,</span> <span class="s">&quot;No parking provider to unregister</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span></pre></td>
    <th bgcolor="#f0f0f0" style="border-left: 1px solid #C0C0C0; border-right: 1px solid #C0C0C0;" align="right"><font size="2">229</font></th>
    <td bgcolor="#ffffff" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "><span class="tb">        </span><span class="tb">        </span><span class="n">ast_log</span><span class="p">(</span><span class="n">AST_LOG_WARNING</span><span class="p">,</span> <span class="s">&quot;No parking provider to unregister</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span></pre></td>
  </tr>

 </tbody>

</table>

  <pre style="white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">While you are here, this message should be removed.  If no module is registered then it has &quot;successfully&quot; unregistered the parking features.  It also causes an unnecessary load failure message.</pre>
 </blockquote>





</blockquote>
<pre style="margin-left: 1em; white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">It seems to me like we should have an assertion in here instead. Attempting to unregister parking features when there aren&#39;t any loaded seems like an error of some kind.</pre>
<br />




<p>- jrose</p>


<br />
<p>On August 16th, 2013, 8:14 p.m. UTC, opticron wrote:</p>








<table bgcolor="#fefadf" width="100%" cellspacing="0" cellpadding="8" style="background-image: url('https://reviewboard.asterisk.org/static/rb/images/review_request_box_top_bg.png'); background-position: left top; background-repeat: repeat-x; border: 1px black solid;">
 <tr>
  <td>

<div>Review request for Asterisk Developers and jrose.</div>
<div>By opticron.</div>


<p style="color: grey;"><i>Updated Aug. 16, 2013, 8:14 p.m.</i></p>







<div style="margin-top: 1.5em;">
 <b style="color: #575012; font-size: 10pt; margin-top: 1.5em;">Bugs: </b>


 <a href="https://issues.asterisk.org/jira/browse/ASTERISK-22142">ASTERISK-22142</a>


</div>



<div style="margin-top: 1.5em;">
 <b style="color: #575012; font-size: 10pt;">Repository: </b>
Asterisk
</div>


<h1 style="color: #575012; font-size: 10pt; margin-top: 1.5em;">Description </h1>
 <table width="100%" bgcolor="#ffffff" cellspacing="0" cellpadding="10" style="border: 1px solid #b8b5a0">
 <tr>
  <td>
   <pre style="margin: 0; padding: 0; white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">This change protects accesses of res_parking such that it can unload safely once transient uses of its registered functions are complete. The parking API has been restructured such that its consumers do not have access to the vtable exposed by the parking provider, but instead route through stubs to prevent consumers from holding on to function pointers.

This adds calls to all the parking unload functions and moves application loading and unloading into functions in parking_applications.c similar to the rest of the parts of res_parking.</pre>
  </td>
 </tr>
</table>


<h1 style="color: #575012; font-size: 10pt; margin-top: 1.5em;">Testing </h1>
<table width="100%" bgcolor="#ffffff" cellspacing="0" cellpadding="10" style="border: 1px solid #b8b5a0">
 <tr>
  <td>
   <pre style="margin: 0; padding: 0; white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">Unloaded and reloaded res_parking ensuring that created dialplan was removed and that tests passed once reloaded.</pre>
  </td>
 </tr>
</table>


<h1 style="color: #575012; font-size: 10pt; margin-top: 1.5em;">Diffs</b> </h1>
<ul style="margin-left: 3em; padding-left: 0;">

 <li>/trunk/channels/chan_dahdi.c <span style="color: grey">(396876)</span></li>

 <li>/trunk/channels/chan_skinny.c <span style="color: grey">(396876)</span></li>

 <li>/trunk/channels/sig_analog.c <span style="color: grey">(396876)</span></li>

 <li>/trunk/include/asterisk/parking.h <span style="color: grey">(396876)</span></li>

 <li>/trunk/main/bridge.c <span style="color: grey">(396876)</span></li>

 <li>/trunk/main/bridge_channel.c <span style="color: grey">(396876)</span></li>

 <li>/trunk/main/parking.c <span style="color: grey">(396876)</span></li>

 <li>/trunk/res/parking/parking_applications.c <span style="color: grey">(396876)</span></li>

 <li>/trunk/res/parking/parking_bridge_features.c <span style="color: grey">(396876)</span></li>

 <li>/trunk/res/parking/res_parking.h <span style="color: grey">(396876)</span></li>

 <li>/trunk/res/res_parking.c <span style="color: grey">(396876)</span></li>

</ul>

<p><a href="https://reviewboard.asterisk.org/r/2763/diff/" style="margin-left: 3em;">View Diff</a></p>







  </td>
 </tr>
</table>








  </div>
 </body>
</html>