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









<div>




<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/1286/diff/6/?file=17455#file17455line2175" style="color: black; font-weight: bold; text-decoration: underline;">http://svn.asterisk.org/svn/asterisk/trunk/apps/app_queue.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; ">static void rt_handle_member_record(struct call_queue *q, char *interface, struct ast_config *member_config)</pre></td>

  </tr>
 </tbody>




 
 



 <tbody>

  <tr>
    <th bgcolor="#b1ebb0" style="border-right: 1px solid #C0C0C0;" align="right"><font size="2"></font></th>
    <td bgcolor="#c5ffc4" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "></pre></td>
    <th bgcolor="#b1ebb0" style="border-left: 1px solid #C0C0C0; border-right: 1px solid #C0C0C0;" align="right"><font size="2">2175</font></th>
    <td bgcolor="#c5ffc4" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; ">                        <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">log_membername_as_agent</span><span class="p">)</span> <span class="p">{</span></pre></td>
  </tr>

 </tbody>





 
 

 <tbody>

  <tr>
    <th bgcolor="#f0f0f0" style="border-right: 1px solid #C0C0C0;" align="right"><font size="2">2170</font></th>
    <td bgcolor="#ffffff" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; ">                        <span class="n">ast_queue_log</span><span class="p">(</span><span class="n">q</span><span class="o">-&gt;</span><span class="n">name</span><span class="p">,</span> <span class="s">&quot;REALTIME&quot;</span><span class="p">,</span> <span class="n">m</span><span class="o">-&gt;</span><span class="n">interface</span><span class="p">,</span> <span class="s">&quot;ADDMEMBER&quot;</span><span class="p">,</span> <span class="s">&quot;%s&quot;</span><span class="p">,</span> <span class="s">&quot;&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">2176</font></th>
    <td bgcolor="#ffffff" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; ">                                <span class="n">ast_queue_log</span><span class="p">(</span><span class="n">q</span><span class="o">-&gt;</span><span class="n">name</span><span class="p">,</span> <span class="s">&quot;REALTIME&quot;</span><span class="p">,</span> <span class="n">m</span><span class="o">-&gt;</span><span class="n">interface</span><span class="p">,</span> <span class="s">&quot;ADDMEMBER&quot;</span><span class="p">,</span> <span class="s">&quot;%s&quot;</span><span class="p">,</span> <span class="s">&quot;&quot;</span><span class="p">);</span></pre></td>
  </tr>

 </tbody>



 
 



 <tbody>

  <tr>
    <th bgcolor="#b1ebb0" style="border-right: 1px solid #C0C0C0;" align="right"><font size="2"></font></th>
    <td bgcolor="#c5ffc4" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "></pre></td>
    <th bgcolor="#b1ebb0" style="border-left: 1px solid #C0C0C0; border-right: 1px solid #C0C0C0;" align="right"><font size="2">2177</font></th>
    <td bgcolor="#c5ffc4" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; ">                        <span class="p">}</span> <span class="k">else</span> <span class="p">{</span></pre></td>
  </tr>

  <tr>
    <th bgcolor="#b1ebb0" style="border-right: 1px solid #C0C0C0;" align="right"><font size="2"></font></th>
    <td bgcolor="#c5ffc4" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "></pre></td>
    <th bgcolor="#b1ebb0" style="border-left: 1px solid #C0C0C0; border-right: 1px solid #C0C0C0;" align="right"><font size="2">2178</font></th>
    <td bgcolor="#c5ffc4" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; ">                                <span class="n">ast_queue_log</span><span class="p">(</span><span class="n">q</span><span class="o">-&gt;</span><span class="n">name</span><span class="p">,</span> <span class="s">&quot;REALTIME&quot;</span><span class="p">,</span> <span class="n">m</span><span class="o">-&gt;</span><span class="n">membername</span><span class="p">,</span> <span class="s">&quot;ADDMEMBER&quot;</span><span class="p">,</span> <span class="s">&quot;%s&quot;</span><span class="p">,</span> <span class="s">&quot;&quot;</span><span class="p">);</span></pre></td>
  </tr>

  <tr>
    <th bgcolor="#b1ebb0" style="border-right: 1px solid #C0C0C0;" align="right"><font size="2"></font></th>
    <td bgcolor="#c5ffc4" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "></pre></td>
    <th bgcolor="#b1ebb0" style="border-left: 1px solid #C0C0C0; border-right: 1px solid #C0C0C0;" align="right"><font size="2">2179</font></th>
    <td bgcolor="#c5ffc4" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; ">                        <span class="p">}</span></pre></td>
  </tr>

 </tbody>

</table>

<pre style="margin-left: 2em; white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">Just one (perhaps stupid) question.  In the ast_queue_log facility, the final arguments are a format string and an argument, for carrying extra information.  Why are we modifying one of the primary arguments, instead of adding an extra argument to the tail of the queue log entry?  Wouldn&#39;t it make sense that somebody is going to want BOTH the interface AND the membername?</pre>
</div>
<br />



<p>- Tilghman</p>


<br />
<p>On July 12th, 2011, 5:12 p.m., jamuel wrote:</p>






<table bgcolor="#fefadf" width="100%" cellspacing="0" cellpadding="8" style="background-image: url('https://reviewboard.asterisk.org/media/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, Tilghman Lesher, leifmadsen, opticron, and irroot.</div>
<div>By jamuel.</div>


<p style="color: grey;"><i>Updated July 12, 2011, 5:12 p.m.</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;">app_queue logs the events ADDMEMBER and REMOVEMEMBER with the agent field set to the interface value rather than the membername value when a member is added with a state_interface value set.  However all other member related queue events are logged with the membername when a state_interface is set. It would seem that these ADD/REMOVE MEMBER events should log the agent field in the same manner. 

This patch addresses the original issue reported in https://issues.asterisk.org/jira/browse/ASTERISK-14769 by providing a queues.conf general configuration option log_membername_as-agent. Setting log_membername_as_agent = yes will cause the membername to be logged in the agent field for ADDMEMBER and REMOVEMEMBER queue events if a state_interface has been set.

The default value (log_membername_as_agent = no) does not alter the existing logging for the ADDMEMBER and REMOVEMEMBER events to maintain existing (buggy) behavior for the sake of backwards compatibility. </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 add, remove, pause, unpause via AMI, CLI, and Dialplan apps and see the correct log output to queue_log.  Also tested with log_membername_as_agent omitted to insure backward compatibility for those queues.conf that might not be updated for this new option. 

Sample test plan (add and remove)
---------------------------------

set log_membername_as_agent = yes in queues.conf

AMI:
====
Action: QueueAdd
Queue: 4152000400
Interface: Local/4152000501@from-internal/n
Penalty: 0
Paused: 0
MemberName: Edward Frank

Action: QueueRemove
Queue: 4152000400
Interface: Local/4152000501@from-internal/n


Action: QueueAdd
Queue: 4152000400
Interface: Local/4152000501@from-internal/n

Action: QueueRemove
Queue: 4152000400
Interface: Local/4152000501@from-internal/n


CLI:
====
&gt; queue add member Local/4152000501@from-internal/n to 4152000400 penalty 0 as &quot;Edward Frank&quot; state_interface Sip/SOFTJPS
&gt; queue remove member Local/4152000501@from-internal/n from 4152000400

&gt; queue add member Local/4152000501@from-internal/n to 4152000400
&gt; queue remove member Local/4152000501@from-internal/n from 4152000400

Dialplan:
=========

[from-test]
exten =&gt; 1234,1,AddQueueMember(4152000400,Local/4152000501@from-internal/n,0,,Edward Davis,Sip/SOFTJPS)
exten =&gt; 1234,n,RemoveQueueMember(4152000400,Local/4152000501@from-internal/n)
exten =&gt; 1234,n,Hangup()

exten =&gt; 5678,1,AddQueueMember(4152000400,Local/4152000501@from-internal/n,0)
exten =&gt; 5678,n,RemoveQueueMember(4152000400,Local/4152000501@from-internal/n)
exten =&gt; 5678,n,Hangup()


Rinse and repeat with log_membername_as_agent = no
Repeat with log_membername_as_agent omitted.
</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/jira/browse/https://issues.asterisk.org/jira/browse/ASTERISK-14769">https://issues.asterisk.org/jira/browse/ASTERISK-14769</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>http://svn.asterisk.org/svn/asterisk/trunk/apps/app_queue.c <span style="color: grey">(327949)</span></li>

 <li>http://svn.asterisk.org/svn/asterisk/trunk/configs/queues.conf.sample <span style="color: grey">(327949)</span></li>

</ul>

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




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








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