<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">On Fri, Oct 30, 2015 at 11:46 AM, Mark Murawski <span dir="ltr"><<a href="mailto:markm-lists@intellasoft.net" target="_blank">markm-lists@intellasoft.net</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Howdy All,<br>
<br>
I'm working on trying to output the channel related to an rtp stream.  I found this line in ast_rtp_read()/res_rtp_asterisk.c and this pointed me to a starting position:<br>
<br>
ast_verb(4, "%p -- Probation passed - setting RTP source address to %s\n", rtp, ast_sockaddr_stringify(&addr))<br>
<br>
I figured to tried this:<br>
{<br>
  struct ast_channel *chan = ast_rtp_instance_get_chan(instance);<br>
  ast_verb(4, "<%s> %p -- Probation passed - setting RTP source address to %s\n", chan ? ast_channel_name(chan) : "NoChannel", rtp, ast_sockaddr_stringify(&addr));<br>
}<br>
<br>
Sometimes this works, and sometimes this doesn't and I'm not sure why.<br>
<br>
If media is setup "slowly", i'll get this:<br>
> [2015-10-30 10:58:04.855] > [C-00000000] <NoChannel> 0xb4a94618 -- Probation passed - setting RTP source address to <a href="http://192.168.5.125:2222" rel="noreferrer" target="_blank">192.168.5.125:2222</a><br>
<br>
It appears that if the media is setup "fast" I'll get this output:<br>
       > [2015-10-30 10:28:54.846]        > [C-0000000a] <SIP/6850-00000013> 0x89ffda8 -- Probation passed - setting RTP source address to <a href="http://192.168.5.123:2224" rel="noreferrer" target="_blank">192.168.5.123:2224</a><br>
       > [2015-10-30 10:28:54.846]        > [C-0000000a] <SIP/6860-00000015> 0x89ec480 -- Probation passed - setting RTP source address to <a href="http://192.168.5.129:2250" rel="noreferrer" target="_blank">192.168.5.129:2250</a><br>
<br>
How can I reliably get the channel name here (or pick a better spot to get the channel name related to rtp ports)?<span class=""><font color="#888888"></font></span><br></blockquote></div><br></div><div class="gmail_extra">First, you could just upgrade to 13, which has this feature already.<br><br></div><div class="gmail_extra">If that's not an option, then you have to do something along the following lines:<br><br></div><div class="gmail_extra">(1) Inject the channel name into the RTP engine/instance when the RTP instance is first created. It generally isn't safe or reliable to go the other direction. While packet to packet bridging does that, it does so in a very particular way, that I would not recommend doing in Asterisk 11 on every RTCP read (or at other times).<br><br></div><div class="gmail_extra">(2) Whenever a masquerade occurs, where the SIP pvt gets moved from one channel to another, re-update the RTP instance with the new channel name. Note: this is why you should just move to Asterisk 13, as a masquerade generally does not occur where the new channel owning the SIP pvt is expected to survive for long. (There are exceptions, but FAR fewer than what you'll find in Asterisk 11.)<br><br></div><div class="gmail_extra">Any other approach is liable to not work. You may want to look at the original patch Jaco Kroon had for this feature on the issue tracker:<br><br><a href="https://issues.asterisk.org/jira/browse/ASTERISK-20754">https://issues.asterisk.org/jira/browse/ASTERISK-20754</a><br></div><div class="gmail_extra"><br></div><div class="gmail_extra">If you read the comments however, you'll note again why you should just do this in Asterisk 13+, as you're liable to run into a lot of corner cases where the channel is not around when you think it should be in 11.<br></div><div class="gmail_extra"><br>-- <br><div class="gmail_signature"><div dir="ltr"><div><div dir="ltr"><div>Matthew Jordan<br></div><div>Digium, Inc. | Director of Technology<br></div><div>445 Jan Davis Drive NW - Huntsville, AL 35806 - USA</div><div>Check us out at: <a href="http://digium.com" target="_blank">http://digium.com</a> & <a href="http://asterisk.org" target="_blank">http://asterisk.org</a></div></div></div></div></div>
</div></div>