Gracias por la pronta respuesta, asi da gusto unirse a una comunidad,
he colocado varios xlog en onreply_route[1] y lo he dejado asi:
onreply_route[1] { xdbg("incoming reply\n");
xlog("L_INFO", "*** onreply_route antes de forzar rtpproxy ***"); if ((isflagset(5) || isbflagset(6)) && status=~"(183)|(2[0-9][0-9])") { xlog("L_INFO", "*** rtpproxy forzado en onreply_route ***"); force_rtp_proxy(); } if (isbflagset(6)) { xlog("L_INFO", "*** fix_nated_contact en onreply_route ***"); fix_nated_contact(); } }
haciendo un tail -f /var/log/syslog veo lo siguiente:
Jun 25 13:39:51 kamailio /usr/local/sbin/kamailio[22088]: *** onreply_route antes de forzar rtpproxy *** Jun 25 13:39:51 kamailio /usr/local/sbin/kamailio[22087]: *** onreply_route antes de forzar rtpproxy *** Jun 25 13:39:55 kamailio /usr/local/sbin/kamailio[22088]: *** onreply_route antes de forzar rtpproxy *** Jun 25 13:39:55 kamailio /usr/local/sbin/kamailio[22088]: *** rtpproxy forzado en onreply_route *** Jun 25 13:39:55 kamailio /usr/local/sbin/kamailio[22088]: ACC: transaction answered: timestamp=1245929995;method=INVITE;from_tag=5c805948a0455e5b;to_tag=c0a80101-3569b;call_id=d1b81cbb5fbb9e6e@192.168.254.110;code=200;reason=OK;src_user=20000004;src_domain=212.4.107.250;dst_ouser=20000000;dst_user=20000000;dst_domain=192.168.254.101 Jun 25 13:39:55 kamailio /usr/local/sbin/kamailio[22089]: ACC: request acknowledged: timestamp=1245929995;method=ACK;from_tag=5c805948a0455e5b;to_tag=c0a80101-3569b;call_id=d1b81cbb5fbb9e6e@192.168.254.110;code=200;reason=OK;src_user=20000004;src_domain=212.4.107.250;dst_ouser=20000000;dst_user=20000000;dst_domain=192.168.254.101 Jun 25 13:39:55 kamailio /usr/local/sbin/kamailio[22088]: *** onreply_route antes de forzar rtpproxy *** Jun 25 13:39:55 kamailio /usr/local/sbin/kamailio[22088]: *** rtpproxy forzado en onreply_route *** Jun 25 13:39:56 kamailio /usr/local/sbin/kamailio[22089]: *** onreply_route antes de forzar rtpproxy *** Jun 25 13:39:56 kamailio /usr/local/sbin/kamailio[22089]: *** rtpproxy forzado en onreply_route *** Jun 25 13:39:58 kamailio /usr/local/sbin/kamailio[22087]: *** onreply_route antes de forzar rtpproxy *** Jun 25 13:39:58 kamailio /usr/local/sbin/kamailio[22087]: *** rtpproxy forzado en onreply_route ***
por lo que veo si hace el force_rtp_proxy() pero no hace nunca el fix_nated_contact() en onreply_route
----- Mensaje original ----- De: "Iñaki Baz Castillo" ibc@aliax.net Para: users-es@lists.kamailio.org Enviados: Jueves, 25 de Junio de 2009 13:25:18 GMT +01:00 Amsterdam / Berlín / Berna / Roma / Estocolmo / Viena Asunto: Re: [SR-Users-ES] No Audio con clientes detras de una NAT, el audio funciona con clientes que usan IPs publicas (Estoy utilizando rtpproxy)
El Jueves, 25 de Junio de 2009, Iñaki Baz Castillo escribió:
El Jueves, 25 de Junio de 2009, rubenrojas - Trc.es escribió:
# Caller NAT detection route /* uncomment the whole following route for enabling Caller NAT Detection */ route[4]{ force_rport(); if (nat_uac_test("19")) { if (method=="REGISTER") { fix_nated_register(); } else { fix_nated_contact(); } setflag(5); } return; }
Lo anterior NO se está ejecutando. Fíjate que el Contact del 200 Ok llega con la IP provada al llamante, por lo que el ACK que envía llega al proxy con el RURI conteniendo una IP privada del llamado, así que el proxy ruta el ACK a la IP privada (que obiviamente no llega). Por eso no oyes audio, porque la negociación del INVITE no acaba (no llega el ACK al llamado, y por eso hay tantas retransmissiones del 200 OK que no pareces haber observado).
Perdona, lo de arriba sí se está ejecutando (el Contact del INVITE cambia). Lo que no cambia es el de la respuesta, o sea, no se ejecuta esto:
onreply_route[1] { xdbg("incoming reply\n");
if ((isflagset(5) || isbflagset(6)) && status=~"(183)|(2[0-9][0-9])") { force_rtp_proxy(); } if (isbflagset(6)) { fix_nated_contact(); } }
Lo que no sé es porqué no se ejecuta puesto que tienes puesto en t_onreply("1") en route[1]. Eso tendrás que descubrirlo a base de poner "xlog" para ver si se están eejcutando los bloques o no. Nadie garantiza que el config file que viene por defecto sea 100% correcto.