2008/2/1, David Villasmil david.villasmil.work@gmail.com:
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).