<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/4399/">https://reviewboard.asterisk.org/r/4399/</a>
     </td>
    </tr>
   </table>
   <br />





<blockquote style="margin-left: 1em; border-left: 2px solid #d0d0d0; padding-left: 10px;">
 <p style="margin-top: 0;">On February 4th, 2015, 2:17 p.m. CST, <b>Mark Michelson</b> wrote:</p>
 <blockquote style="margin-left: 1em; border-left: 2px solid #d0d0d0; padding-left: 10px;">
  <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 a shutdown request is pending it is desirable to continue to process ARI HTTP requests for current calls"

I'm curious what the justification behind this is. I would expect that for a "now" or "graceful" shutdown, you would want similar behavior as for calls. That is, you'd want to stop accepting HTTP requests in order to allow for the shutdown to continue. For the "when convenient" shutdown, then I'd expect to continue taking HTTP requests until the final shutdown, like you've done here.</pre>
 </blockquote>







</blockquote>

<pre style="white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">Existing calls in a gracefull shutdown should be able to continue in an IVR by sending DTMF digits and having a stasis application play recordings back or the application could send the call to voicemail with a prompt that representatives are not available.  Transfers obviously won't work because new channels cannot be created at this time but otherwise things should still function until the call hangs up.</pre>
<br />










<p>- rmudgett</p>


<br />
<p>On February 3rd, 2015, 2:10 p.m. CST, rmudgett 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.ab6f3b1072c9.png'); background-position: left top; background-repeat: repeat-x; border: 1px black solid;">
 <tr>
  <td>

<div>Review request for Asterisk Developers.</div>
<div>By rmudgett.</div>


<p style="color: grey;"><i>Updated Feb. 3, 2015, 2:10 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-24752">ASTERISK-24752</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;">There are three CLI commands to stop and restart Asterisk each.

1) core stop/restart now - Hangup all calls and stop or restart Asterisk.

2) core stop/restart gracefully - Stop or restart Asterisk when there are
no calls in the system.  New channels are prevented while the shutdown
request is pending.

3) core stop/restart when convenient - Stop or restart Asterisk when there
are no calls in the system.  New calls are not prevented while the
shutdown request is pending.

ARI has made stopping/restarting Asterisk more problematic.  While a
shutdown request is pending it is desirable to continue to process ARI
HTTP requests for current calls.  To handle the current calls while a
shutdown request is pending, a new committed to shutdown phase is needed
so ARI applications can deal with the calls until the system is fully
committed to shutdown.

* Added a new shutdown committed phase so ARI applications can deal with
calls until the final committed to shutdown phase is reached.

* Made refuse new HTTP requests when the system has reached the final
system shutdown phase.

* Split the bridging framework shutdown to not cleanup the global bridging
containers when shutting down in a hurry.  This is similar to how other
modules prevent crashes on rapid system shutdown.

* Moved prototypes for ast_begin_shutdown(), ast_cancel_shutdown(), and
ast_shutting_down() to asterisk.h.  You should not have to include
channel.h just to access these system functions.
</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;">Extended the final shutdown phase sleep so I could send a HTTP request
while in the final shutdown phase.  The HTTP request was not refused while
the shutdown request was pending and refused after the final shutdown
phase was reached.
</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>/branches/13/main/http.c <span style="color: grey">(431537)</span></li>

 <li>/branches/13/main/bridge.c <span style="color: grey">(431537)</span></li>

 <li>/branches/13/main/asterisk.c <span style="color: grey">(431537)</span></li>

 <li>/branches/13/include/asterisk/channel.h <span style="color: grey">(431537)</span></li>

 <li>/branches/13/include/asterisk.h <span style="color: grey">(431537)</span></li>

</ul>

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







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








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