Hi All,<br><br><span class="HcCDpe"><span class="EP8xU" style="color: rgb(121, 6, 25);">A few days ago Mark Michelson</span></span> was able to help me figure out that asterisk was crashing when hanging up a 3-way call because the CDR was being set to Null at that point.&nbsp; However, the code below works perfectly for&nbsp; 2-way calling. <br>
<br>Can anyone share some insight as to why the CDR might be null when hanging up a 3-way call?&nbsp; Or is there another way of calculating the duration and the billsec without using the CDR?<br><br>Thanks for your help.<br><br>
struct tm tm;<br> timestr[128];<br>time_t t;<br><br>{<br>&nbsp;&nbsp;&nbsp; time(&amp;t);<br>&nbsp;&nbsp;&nbsp; ast_localtime(&amp;t, &amp;tm, NULL);<br>&nbsp;&nbsp;&nbsp; strftime(timestr,128,DATE_<div id=":6c" class="ArwC7c ckChnd">FORMAT,&amp;tm);<br>
&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; ast_cdr_end(cdr);<br>&nbsp; <br>&nbsp;&nbsp;&nbsp; if (!cdr-&gt;end.tv_sec &amp;&amp; !cdr-&gt;end.tv_usec)<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ast_log(LOG_WARNING, &quot;CDR on channel &#39;%s&#39; lacks end\n&quot;, cdr-&gt;channel);<br><br>&nbsp; &nbsp; if (!cdr-&gt;start.tv_sec &amp;&amp; !cdr-&gt;start.tv_usec)<br>

&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ast_log(LOG_WARNING, &quot;CDR on channel &#39;%s&#39; lacks start\n&quot;, cdr-&gt;channel);<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; if (cdr-&gt;answer.tv_sec || cdr-&gt;answer.tv_usec) {<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; cdr-&gt;billsec = cdr-&gt;end.tv_sec - cdr-&gt;answer.tv_sec + (cdr-&gt;end.tv_usec - cdr-&gt;answer.tv_usec) / 1000000;<br>&nbsp;&nbsp;&nbsp; } else {&nbsp;&nbsp;&nbsp; cdr-&gt;billsec = 0;}<br>

<br>}</div>