- if there are two or more Media Proxies in a row in
your session, you
might end up in a deadlock situation, resulting in no media
transmitted
(general issue).
Bernie,
You can circumvent this in the stable version by adding/checking an
extra header:
if (method=="INVITE") {
xlog ("L_INFO","-------------------------");
if (search("^P-Behind-NAT.*Yes.*") ||
search("^P-RTP-Proxy.*YES.*")) {
xlog ("L_INFO","Already one Media Proxy in the
path");
} else {
xlog ("L_INFO","Use SerMediaProxy - Incomming
call leg");
append_hf("P-Behind-NAT: Yes\r\n");
force_rtp_proxy();
}
t_on_reply("1");
};
In unstable Maxim did something already in this respect and I will
provide an update soon to have SerMediaProxy work out of the box.
--
Adrian
Hi!
I have such a setup because in my scenario only the Media Proxy has the
rights to receive connections coming from the Internet. Direct traffic
to
all other hosts (UAs) is blocked.
It might be that you have to insert one more line,
i.e. setflag(1) (don't ask me why...:-) )
Below a cut-past from my testing configuration, which seems to work fine
----
[...]
# force RTP-proxy
if (method=="INVITE") {
record_route();
setflag(1);
force_rtp_proxy();
/* set up reply processing */
t_on_reply("1");
};
# forward to current uri now; use stateful forwarding; that
# works reliably even if we forward from TCP to UDP
if (!t_relay()) {
sl_reply_error();
};
}
# RTP-proxy
# all incoming replies for t_onrepli-ed transactions enter here
onreply_route[1] {
if (status=~"[12][0-9][0-9]")
force_rtp_proxy();
}
---
Be prepared on the following possible issues:
- Clients, which do not support symetric media (sender port==receiver
port) will probably not work. (Most of those anyway do not work behind
NAT.)
- If you have more than one media (e.g. Audio and Video) in the same
sesssion, only one media (the first m= line) is proxied correctly. The
other media probably won't work (general issue).
- if there are two or more Media Proxies in a row in your session, you
might end up in a deadlock situation, resulting in no media
transmitted
(general issue).
Have fun!
T: Bernie
On Wed, 18 Feb 2004, CURRO_DOMINGUEZ wrote:
Hello,
thanks all the list for help me (and others) with nathelper and
rtpproxy.
I want to test rtpproxy on my network, but without nat translation. It
means, udp streams have to go through my server.
I'm not sure what functions from nathelper module I have to use. My
idea
is something like this:
if (method=="INVITE"){
force_rtp_proxy();
t_on_reply("1");
}
....
onreply_route[1]{
force_rtp_proxy();
}
I don't know whether this code is enough, or I have to use another
functions like fix_nated_contact() or fix_nated_sdp() to rewrite
Contact
an SDP headers.
Thanks for your help.
_______________________________________________
Serusers mailing list
Serusers at
iptel.org
http://lists.iptel.org/mailman/listinfo/serusers