2008/2/1, David Villasmil <david.villasmil.work(a)gmail.com>om>:
route{
if (method=="INVITE") {
# CUSTOMER-CUSTOMER CALL
if($si=="ip1"||$si=="ip2"){
xlog("L_ERR", "\n************** CUSTOMER-CUSTOMER
CALL
(ASTERISK->OPENSER) ************\n");
if (uri=~"^sip:8888"){
strip(4);
}
if (!lookup("location")) {
sl_send_reply("404", "Not Found");
exit;
};
}
}
if (!lookup("location")) {
sl_send_reply("404", "Not Found");
exit;
};
Si el INVITE viene de esas IP's estás aplicando **2 veces** el
lookup(location). La segunda obviamente fallará, pues ya habías
modificado el URI en la primera.
************** CUSTOMER-CUSTOMER CALL
(ASTERISK->OPENSER) ************
11(20554) rewrite_uri: Rewriting Request-URI with 'sip:s@192.168.1.253'
porqué el username termina siendo "s"?????
claro, así nunca lo encontrará!
Asterisk por defecto se registra como "s@IP", puedes comprobarlo
monitorizando el REGISTER que envía Asterisk y mirando la cabecera
"Contact" (que es la localización que registra). No hay ningún
problema por ello, ninguno.
No obstante ,puedes forzar a que registre otro username así:
register => usuario:passwd@dominio/nuevo_username
y registrará ese username en vez de "s".
Pero este NO es tu poblema, el fallo es que aplicas dos veces lookup(location).
--
Iñaki Baz Castillo
<ibc(a)aliax.net>