<html><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><br><div><div>On 1 Jun 2009, at 15:12, Thomas Gelf wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite"><div>Bogdan-Andrei Iancu wrote:<br><blockquote type="cite"><blockquote type="cite"> test 8 (search RFC1918<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">addresses in the SDP payload) has no equivalent in client_nat_test().<br></blockquote></blockquote><br><blockquote type="cite">again, I do use this use this test, but not for detecting the private <br></blockquote><blockquote type="cite">IPs, but public once - this is useful when doing chains of RTPproxys + <br></blockquote><blockquote type="cite">mediaproxy + whatever other media relay.<br></blockquote><blockquote type="cite">... <br></blockquote><blockquote type="cite">here, to avoid deadlock between the 2 media relays, you detect if a <br></blockquote><blockquote type="cite">public IP is in the SDP and start using that IP right away instead of <br></blockquote><blockquote type="cite">waiting to receive traffic (in order to discover the RTP peer).<br></blockquote><br>That's a good example, thank you. Could such a "deadlock" still happen<br>with current Mediaproxy implementations? </div></blockquote><div><br></div><div>No. Mediaproxy doesn't suffer from this problem. You can chain as many mediaproxy relays as you want, they will simply work without any need to do anything in the proxy configuration. The only requirement is that all chained media relays have a public IP address.</div><br><blockquote type="cite"><div>Hmmm... While reflecting about<br>the whole thing... how does Mediaproxy find out what port this clients<br>RTP will come from - if using nothing but netlink/netfilter?!<br><br></div></blockquote><div><br></div><div>It obviously has to listen in userspace for the first packets from each side, before it can create a conntrack rule.</div><br><blockquote type="cite"><div>And: does it care about source ports? Or does it just "forward" packets<br>arriving on that specific reserved port (maybe checking just the source<br>ip?).</div></blockquote><div><br></div><div>Of course it cares. A conntrack rule maps a certain source IP/port with a destination IP/port via a parit of IP/port on the relay.</div><br><blockquote type="cite"><div> But even doing so could still lead to "deadlocks", correct?<br><br></div></blockquote><div><br></div><div>Incorrect. Mediaproxy doesn't deadlock by design. All that is required is to use public IP addresses on relays.</div><div><br></div></div><div apple-content-edited="true"><span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0; "><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; "><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; "><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; "><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; "><div>--</div><div>Dan</div><div><br></div></span></div></span></div></span></div></span></div></span><br class="Apple-interchange-newline"> </div><br></body></html>