<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/1651/">https://reviewboard.asterisk.org/r/1651/</a>
</td>
</tr>
</table>
<br />
<blockquote style="margin-left: 1em; border-left: 2px solid #d0d0d0; padding-left: 10px;">
<p style="margin-top: 0;">On January 11th, 2012, 2:45 a.m., <b>wdoekes</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/1651/diff/5/?file=23045#file23045line1464" style="color: black; font-weight: bold; text-decoration: underline;">trunk/apps/app_osplookup.c</a>
<span style="font-weight: normal;">
(Diff revision 5)
</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 int osp_lookup(</pre></td>
</tr>
</tbody>
<tbody>
<tr>
<th bgcolor="#f0f0f0" style="border-right: 1px solid #C0C0C0;" align="right"><font size="2">1464</font></th>
<td bgcolor="#ffffff" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; ">        <span class="k">case</span> <span class="n">OSP_CALLID_IAX</span>:</pre></td>
<th bgcolor="#f0f0f0" style="border-left: 1px solid #C0C0C0; border-right: 1px solid #C0C0C0;" align="right"><font size="2">1463</font></th>
<td bgcolor="#ffffff" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; ">        <span class="k">case</span> <span class="n">OSP_CALLID_IAX</span>:</pre></td>
</tr>
<tr>
<th bgcolor="#f0f0f0" style="border-right: 1px solid #C0C0C0;" align="right"><font size="2">1465</font></th>
<td bgcolor="#ffffff" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; ">                <span class="n">res</span> <span class="o">=</span> <span class="n">OSP_FAILED</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">1464</font></th>
<td bgcolor="#ffffff" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; ">                <span class="n">res</span> <span class="o">=</span> <span class="n">OSP_FAILED</span><span class="p">;</span></pre></td>
</tr>
<tr>
<th bgcolor="#f0f0f0" style="border-right: 1px solid #C0C0C0;" align="right"><font size="2">1466</font></th>
<td bgcolor="#ffffff" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; ">        <span class="nl">default:</span></pre></td>
<th bgcolor="#f0f0f0" style="border-left: 1px solid #C0C0C0; border-right: 1px solid #C0C0C0;" align="right"><font size="2">1465</font></th>
<td bgcolor="#ffffff" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; ">        <span class="nl">default:</span></pre></td>
</tr>
<tr>
<th bgcolor="#f0f0f0" style="border-right: 1px solid #C0C0C0;" align="right"><font size="2">1467</font></th>
<td bgcolor="#ffffff" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; ">                <span class="n">res</span> <span class="o">=</span> <span class="n">OSP_ERROR</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">1466</font></th>
<td bgcolor="#ffffff" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; ">                <span class="n">res</span> <span class="o">=</span> <span class="n">OSP_ERROR</span><span class="p">;</span></pre></td>
</tr>
<tr>
<th bgcolor="#f0f0f0" style="border-right: 1px solid #C0C0C0;" align="right"><font size="2">1468</font></th>
<td bgcolor="#ffffff" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; ">                <span class="k">break</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">1467</font></th>
<td bgcolor="#ffffff" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; ">                <span class="k">break</span><span class="p">;</span></pre></td>
</tr>
<tr>
<th bgcolor="#f0f0f0" style="border-right: 1px solid #C0C0C0;" align="right"><font size="2">1469</font></th>
<td bgcolor="#ffffff" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; ">        <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">1468</font></th>
<td bgcolor="#ffffff" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; ">        <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;">/me points some more at this code.</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;">its "probably" the normal behavior, since its the same for OSP_CALLID_SIP too.
</pre>
<br />
<blockquote style="margin-left: 1em; border-left: 2px solid #d0d0d0; padding-left: 10px;">
<p style="margin-top: 0;">On January 11th, 2012, 2:45 a.m., <b>wdoekes</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/1651/diff/5/?file=23046#file23046line4866" style="color: black; font-weight: bold; text-decoration: underline;">trunk/apps/app_queue.c</a>
<span style="font-weight: normal;">
(Diff revision 5)
</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 int try_calling(struct queue_ent *qe, const char *options, char *announceoverride, const char *url, int *tries, int *noption, const char *agi, const char *macro, const char *gosub, int ringing)</pre></td>
</tr>
</tbody>
<tbody>
<tr>
<th bgcolor="#e9eaa8" style="border-right: 1px solid #C0C0C0;" align="right"><font size="2">4866</font></th>
<td bgcolor="#fdfebc" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; ">                                <span class="k">if</span> <span class="p">((</span><span class="n">monexec</span> <span class="o">=</span> <span class="n">pbx_builtin_getvar_helper</span><span class="p">(</span><span class="n">qe</span><span class="o">-></span><span class="n">chan</span><span class="p">,</span> <span class="s">"MONITOR_EXEC"</span><span class="p">))</span><span class="hl"> </span><span class="o"><span class="hl">||</span></span><span class="hl"> </span><span class="p"><span class="hl">(</span></span><span class="n"><span class="hl">monargs</span></span><span class="hl"> </span><span class="o"><span class="hl">=</span></span><span class="hl"> </span><span class="n"><span class="hl">pbx_builtin_getvar_helper</span></span><span class="p"><span class="hl">(</span></span><span class="n"><span class="hl">qe</span></span><span class="o"><span class="hl">-></span></span><span class="n"><span class="hl">chan</span></span><span class="p"><span class="hl">,</span></span><span class="hl"> </span><span class="s"><span class="hl">"MONITOR_EXEC_ARGS"</span></span><span class="p"><span class="hl">))</span>)</span> <span class="p">{</span></pre></td>
<th bgcolor="#e9eaa8" style="border-left: 1px solid #C0C0C0; border-right: 1px solid #C0C0C0;" align="right"><font size="2">4866</font></th>
<td bgcolor="#fdfebc" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; ">                                <span class="k">if</span> <span class="p">((</span><span class="n">monexec</span> <span class="o">=</span> <span class="n">pbx_builtin_getvar_helper</span><span class="p">(</span><span class="n">qe</span><span class="o">-></span><span class="n">chan</span><span class="p">,</span> <span class="s">"MONITOR_EXEC"</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">4867</font></th>
<td bgcolor="#ffffff" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; ">                                        <span class="n">which</span> <span class="o">=</span> <span class="n">qe</span><span class="o">-></span><span class="n">chan</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">4867</font></th>
<td bgcolor="#ffffff" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; ">                                        <span class="n">which</span> <span class="o">=</span> <span class="n">qe</span><span class="o">-></span><span class="n">chan</span><span class="p">;</span></pre></td>
</tr>
<tr>
<th bgcolor="#f0f0f0" style="border-right: 1px solid #C0C0C0;" align="right"><font size="2">4868</font></th>
<td bgcolor="#ffffff" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; ">                                        <span class="n">monexec</span> <span class="o">=</span> <span class="n">monexec</span> <span class="o">?</span> <span class="n">ast_strdupa</span><span class="p">(</span><span class="n">monexec</span><span class="p">)</span> <span class="o">:</span> <span class="nb">NULL</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">4868</font></th>
<td bgcolor="#ffffff" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; ">                                        <span class="n">monexec</span> <span class="o">=</span> <span class="n">monexec</span> <span class="o">?</span> <span class="n">ast_strdupa</span><span class="p">(</span><span class="n">monexec</span><span class="p">)</span> <span class="o">:</span> <span class="nb">NULL</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;">You *are* changing functionality:
if MONITOR_EXEC == NULL but MONITOR_EXEC_ARGS isn't, then.
Previously: which == qe->chan
Now: which == peer
Are you sure you want to do that? And if you are, then you should fix the inline if below, because then monexec is not NULL ever anymore.
(And if you're not, one may need to reconsider the "if (!ast_strlen_zero(monexec)) {" below.. maybe it needs to be "if (!ast_strlen_zero(monexec) || !ast_strlen_zero(monargs)) {".)</pre>
</blockquote>
<p>On January 11th, 2012, 11:09 a.m., <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;">Most of this code block doesn't make a lot of sense.
If qe->chan has MONITOR_EXEC set, then it makes good sense that once the call has completed, we should call ast_monitor_setjoinfiles() on qe->chan. With the existing code, if qe->chan does not have MONITOR_EXEC set but does have MONITOR_EXEC_ARGS set, then the result would be that we call ast_monitor_setjoinfiles() on the peer channel. The problem is, when the monitor stops, it's not actually going to use the MONITOR_EXEC or MONITOR_EXEC_ARGS from the qe->chan, it's going to use the MONITOR_EXEC and MONITOR_EXEC_ARGS on the peer channel, which may be different or (more likely) nonexistent.
It doesn't make sense to me that the presence of MONITOR_EXEC or MONITOR_EXEC_ARGS should determine which channel the monitor is applied to. It's overloading the meaning of what MONITOR_EXEC means. All the channel variable is supposed to do is give a command to be run once the monitor stops on the channel.
I suppose the one "nice" thing, and that's being generous, is that none of this behavior is documented anywhere. If we do change behavior, all we would need to do is make a note in CHANGES, and we wouldn't have to worry about being backwards compatible in the case of an upgrade.
In my opinion, the MONITOR_EXEC variable should be the only thing that is checked to determine if ast_monitor_setjoinfiles() should be called. res_monitor can determine what the args are for the command to execute. Now, as far as which channel to apply the monitor to...does it really matter? I mean, the result is the same either way. You get one channel in one recording and the other in another recording. The only difference is which channel is the "in" and which channel is the "out" recording. I think that in most cases, if people are setting MONITOR_EXEC or MONITOR_EXEC_ARGS they are either going to set it only on the incoming channel OR they're going to use __MONITOR_EXEC and __MONITOR_EXEC_ARGS so that the outbound channel has the same value as the incoming channel. So I think it makes the most sense to always monitor the incoming channel. If there's something I'm not taking into account let me know. The only thing I thought of that might make a difference is if a transfer occurs. But as far as I know, monitors get moved over during a masquerade, meaning that the result would still be the same no matter which channel the monitor was initially applied to.</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;">I restore the initial condition with monexec and monargs to avoid having MONITOR_EXEC, but not MONITOR_EXEC_ARGS.
I intentionally leave the ast_strlen_zero as-is as per Mark said.
In this way, we keep the exact same behavior and make sure everything is backward-compatible.</pre>
<br />
<blockquote style="margin-left: 1em; border-left: 2px solid #d0d0d0; padding-left: 10px;">
<p style="margin-top: 0;">On January 11th, 2012, 2:45 a.m., <b>wdoekes</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/1651/diff/5/?file=23047#file23047line1952" style="color: black; font-weight: bold; text-decoration: underline;">trunk/apps/app_voicemail.c</a>
<span style="font-weight: normal;">
(Diff revision 5)
</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 int imap_retrieve_greeting(const char *dir, const int msgnum, struct ast_vm_user *vmu)</pre></td>
</tr>
</tbody>
<tbody>
<tr>
<th bgcolor="#e9eaa8" style="border-right: 1px solid #C0C0C0;" align="right"><font size="2">1952</font></th>
<td bgcolor="#fdfebc" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "><span class="hl">        </span><span class="n"><span class="hl">ret</span></span><span class="hl"> </span><span class="o"><span class="hl">=</span></span><span class="hl"> </span><span class="n">init_mailstream</span><span class="p">(</span><span class="n">vms_p</span><span class="p">,</span> <span class="n">GREETINGS_FOLDER</span><span class="p">)<span class="hl">;</span></span></pre></td>
<th bgcolor="#e9eaa8" style="border-left: 1px solid #C0C0C0; border-right: 1px solid #C0C0C0;" align="right"><font size="2">1952</font></th>
<td bgcolor="#fdfebc" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "><span class="hl">        </span><span class="k"><span class="hl">if</span></span><span class="hl"> </span><span class="p"><span class="hl">(</span></span><span class="hl"> </span><span class="o"><span class="hl">!</span></span><span class="n">init_mailstream</span><span class="p">(</span><span class="n">vms_p</span><span class="p">,</span> <span class="n">GREETINGS_FOLDER</span><span class="p">)</span><span class="hl"> </span><span class="p"><span class="hl">)</span></span><span class="hl"> </span><span class="p"><span class="hl">{</span></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">1953</font></th>
<td bgcolor="#c5ffc4" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; ">                <span class="n">ast_log</span><span class="p">(</span><span class="n">AST_LOG_WARNING</span><span class="p">,</span> <span class="s">"Unable to open mailstream.</span><span class="se">\n</span><span class="s">"</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">1954</font></th>
<td bgcolor="#c5ffc4" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; ">                <span class="n">ast_mutex_unlock</span><span class="p">(</span><span class="o">&</span><span class="n">vms_p</span><span class="o">-></span><span class="n">lock</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">1955</font></th>
<td bgcolor="#c5ffc4" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; ">                <span class="k">return</span> <span class="o">-</span><span class="mi">1</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">1956</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>
<tbody>
<tr>
<th bgcolor="#f0f0f0" style="border-right: 1px solid #C0C0C0;" align="right"><font size="2">1953</font></th>
<td bgcolor="#ffffff" 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">vms_p</span><span class="o">-></span><span class="n">mailstream</span><span class="p">)</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">1957</font></th>
<td bgcolor="#ffffff" 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">vms_p</span><span class="o">-></span><span class="n">mailstream</span><span class="p">)</span> <span class="p">{</span></pre></td>
</tr>
<tr>
<th bgcolor="#f0f0f0" style="border-right: 1px solid #C0C0C0;" align="right"><font size="2">1954</font></th>
<td bgcolor="#ffffff" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; ">                <span class="n">ast_log</span><span class="p">(</span><span class="n">AST_LOG_ERROR</span><span class="p">,</span> <span class="s">"IMAP mailstream is NULL</span><span class="se">\n</span><span class="s">"</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">1958</font></th>
<td bgcolor="#ffffff" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; ">                <span class="n">ast_log</span><span class="p">(</span><span class="n">AST_LOG_ERROR</span><span class="p">,</span> <span class="s">"IMAP mailstream is NULL</span><span class="se">\n</span><span class="s">"</span><span class="p">);</span></pre></td>
</tr>
<tr>
<th bgcolor="#f0f0f0" style="border-right: 1px solid #C0C0C0;" align="right"><font size="2">1955</font></th>
<td bgcolor="#ffffff" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; ">                <span class="n">ast_mutex_unlock</span><span class="p">(</span><span class="o">&</span><span class="n">vms_p</span><span class="o">-></span><span class="n">lock</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">1959</font></th>
<td bgcolor="#ffffff" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; ">                <span class="n">ast_mutex_unlock</span><span class="p">(</span><span class="o">&</span><span class="n">vms_p</span><span class="o">-></span><span class="n">lock</span><span class="p">);</span></pre></td>
</tr>
<tr>
<th bgcolor="#f0f0f0" style="border-right: 1px solid #C0C0C0;" align="right"><font size="2">1956</font></th>
<td bgcolor="#ffffff" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; ">                <span class="k">return</span> <span class="o">-</span><span class="mi">1</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">1960</font></th>
<td bgcolor="#ffffff" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; ">                <span class="k">return</span> <span class="o">-</span><span class="mi">1</span><span class="p">;</span></pre></td>
</tr>
<tr>
<th bgcolor="#f0f0f0" style="border-right: 1px solid #C0C0C0;" align="right"><font size="2">1957</font></th>
<td bgcolor="#ffffff" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; ">        <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">1961</font></th>
<td bgcolor="#ffffff" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; ">        <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;">You're changing an error message here:
in init_mailstream, we have:
if (vms->mailstream == NIL) {
return -1;
} else {
return 0;
}
NIL happens to be 0 (which should be checked instead, but that's a different matter).
(The only other time init_mailstream returns non-zero is when vms_p is NULL, but it isn't.)
So now the error is "Unable to open ..." instead of "IMAP mailstream is ..." when !vms_p->mailstream.
The rest of the code is inconsistent about checking against !vms_p->mailstream or vms_p->mailstream == NIL. I don't expect you to fix that.
You could combine this into a single if, removing the second check, but using the second error.
(P.S. A similar pattern of not checking init_mailstream return and only !somevar->mailstream happens later on as well on line 7456.)</pre>
</blockquote>
<p>On January 11th, 2012, 12:55 p.m., <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;">More importantly, you are interpreting the return of init_mailstream incorrectly. It returns 0 on success, but you are treating it as if it is a failure here.</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;">fixed, by combining the 2 conditions together.</pre>
<br />
<blockquote style="margin-left: 1em; border-left: 2px solid #d0d0d0; padding-left: 10px;">
<p style="margin-top: 0;">On January 11th, 2012, 2:45 a.m., <b>wdoekes</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/1651/diff/5/?file=23059#file23059line2596" style="color: black; font-weight: bold; text-decoration: underline;">trunk/main/ast_expr2f.c</a>
<span style="font-weight: normal;">
(Diff revision 5)
</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 char *expr2_token_subst(const char *mess)</pre></td>
</tr>
</tbody>
<tbody>
<tr>
<th bgcolor="#e9eaa8" style="border-right: 1px solid #C0C0C0;" align="right"><font size="2">2596</font></th>
<td bgcolor="#fdfebc" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "><span class="ew">        </span></pre></td>
<th bgcolor="#e9eaa8" style="border-left: 1px solid #C0C0C0; border-right: 1px solid #C0C0C0;" align="right"><font size="2">2588</font></th>
<td bgcolor="#fdfebc" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; ">        <span class="k">for</span><span class="p">(</span><span class="n">i</span><span class="o">=</span><span class="mi">0</span><span class="p">;</span><span class="n">i</span><span class="o"><</span> <span class="p">(</span><span class="kt">int</span><span class="p">)(</span><span class="n">yytext</span> <span class="o">-</span> <span class="n">YY_CURRENT_BUFFER_LVALUE</span><span class="o">-></span><span class="n">yy_ch_buf</span><span class="p">);</span><span class="n">i</span><span class="o">++</span><span class="p">)</span> <span class="n">spacebuf</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">=</span> <span class="sc">' '</span><span class="p">;</span> <span class="cm">/* uh... assuming yyg is defined, then I can use the yycolumn macro,</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;">Since you're touching this line, you may as well fix the indentation (braces, correct spacing around the for-arguments).</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;">fixed, with the comments below also.
</pre>
<br />
<p>- junky</p>
<br />
<p>On January 10th, 2012, 8:49 p.m., junky 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.</div>
<div>By junky.</div>
<p style="color: grey;"><i>Updated Jan. 10, 2012, 8:49 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;">By running cppcheck 1.52, i realized there was many errors/warnings.
This patch fixes many of those.</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;">still compile fine.
Shouldn't have any impact on the code execution.</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/addons/chan_mobile.c <span style="color: grey">(349670)</span></li>
<li>trunk/addons/chan_ooh323.c <span style="color: grey">(349670)</span></li>
<li>trunk/apps/app_alarmreceiver.c <span style="color: grey">(349670)</span></li>
<li>trunk/apps/app_chanspy.c <span style="color: grey">(349670)</span></li>
<li>trunk/apps/app_disa.c <span style="color: grey">(349670)</span></li>
<li>trunk/apps/app_minivm.c <span style="color: grey">(349670)</span></li>
<li>trunk/apps/app_osplookup.c <span style="color: grey">(349670)</span></li>
<li>trunk/apps/app_queue.c <span style="color: grey">(349670)</span></li>
<li>trunk/apps/app_voicemail.c <span style="color: grey">(349670)</span></li>
<li>trunk/channels/chan_dahdi.c <span style="color: grey">(349670)</span></li>
<li>trunk/channels/chan_iax2.c <span style="color: grey">(349670)</span></li>
<li>trunk/channels/chan_misdn.c <span style="color: grey">(349670)</span></li>
<li>trunk/channels/chan_skinny.c <span style="color: grey">(349670)</span></li>
<li>trunk/channels/chan_usbradio.c <span style="color: grey">(349670)</span></li>
<li>trunk/formats/format_h263.c <span style="color: grey">(349670)</span></li>
<li>trunk/funcs/func_env.c <span style="color: grey">(349670)</span></li>
<li>trunk/funcs/func_odbc.c <span style="color: grey">(349670)</span></li>
<li>trunk/funcs/func_strings.c <span style="color: grey">(349670)</span></li>
<li>trunk/main/acl.c <span style="color: grey">(349670)</span></li>
<li>trunk/main/ast_expr2.c <span style="color: grey">(349670)</span></li>
<li>trunk/main/ast_expr2f.c <span style="color: grey">(349670)</span></li>
<li>trunk/main/pbx.c <span style="color: grey">(349670)</span></li>
<li>trunk/main/udptl.c <span style="color: grey">(349670)</span></li>
<li>trunk/res/res_phoneprov.c <span style="color: grey">(349670)</span></li>
<li>trunk/utils/astman.c <span style="color: grey">(349670)</span></li>
</ul>
<p><a href="https://reviewboard.asterisk.org/r/1651/diff/" style="margin-left: 3em;">View Diff</a></p>
</td>
</tr>
</table>
</div>
</body>
</html>