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





<blockquote style="margin-left: 1em; border-left: 2px solid #d0d0d0; padding-left: 10px;">
 <p style="margin-top: 0;">On May 27th, 2011, 7:06 a.m., <b>Alec Davis</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;">Could never get the next 3 senarios to fail, with or without this review patch.
1 call with 2 ringing extensions in same group, with 2 extensions concurrently attempt pickup.
1 call with 1 ringing extension, with 2 extensions concurrently attempt pickup.
2 DAHDI extensions ringing in to the same call group with each destination with 2 ringing calls, and with 2 extensions attempt pickup. Both calls were picked up as expected.

Which indicates, all is well with the above senarios.

But I still wonder what&#39;s the particluar senario that fails.</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;">Deadlock is possible when holding the target channel lock and trying to get the chan channel lock.  The patch removes needing to hold the target lock after adding the datastore and getting the connected line data off of the target channel.

Holding the target lock when calling ast_channel_masquerade() is not a good idea because that routine does deadlock avoidance.  (There is legacy code elsewhere calling that function with locks held.)</pre>
<br />








<p>- rmudgett</p>


<br />
<p>On May 26th, 2011, 6:31 p.m., rmudgett wrote:</p>






<table bgcolor="#fefadf" width="100%" cellspacing="0" cellpadding="8" style="background-image: url('https://reviewboard.asterisk.orgrb/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, Alec Davis and irroot.</div>
<div>By rmudgett.</div>


<p style="color: grey;"><i>Updated 2011-05-26 18:31:19</i></p>




<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;">Fix potential deadlock in ast_do_pickup() with channels chan and target lock and channel container lock.

This should eliminate the deadlock avoidance code in https://reviewboard.asterisk.org/r/1118/ for issue 18830.

* Moved can_pickup() to ast_can_pickup() in features.c.</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;">Tested a simple call pickup to make sure that it at least still works.
Needs competing call pickup testing.</pre>
  </td>
 </tr>
</table>



<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/view.php?id=18654">18654</a>, 

 <a href="https://issues.asterisk.org/view.php?id=18830">18830</a>


</div>


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

 <li>/branches/1.8/include/asterisk/features.h <span style="color: grey">(321209)</span></li>

 <li>/branches/1.8/main/features.c <span style="color: grey">(321209)</span></li>

 <li>/branches/1.8/apps/app_directed_pickup.c <span style="color: grey">(321209)</span></li>

</ul>

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




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








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