El Lunes, 27 de Agosto de 2007, Iñaki Baz Castillo escribió:
#
-----------------------------------------------------------------
# Forwarding
# -----------------------------------------------------------------
route[11] {
if ($hdr(Forwarding)) {
xlog("L_INFO", "Encontrada cabecera 'Forwarding'
-> No
miramos tabla 'forwarding' para $ru\n");
return(-1);
}
avp_db_query("SELECT uri FROM forwarding WHERE
username='$rU'", "$avp(s:forwarding_uri)");
if ($rc == 1) {
# Cabecera para que el nuevo branch y el actual (via
outbound) # no pasen por "trusted":
append_hf("No-Trusted: Forwarding\r\n");
# Cabecera para que el nuevo branch no vuelva a pasar por
"forwarding": append_hf("Forwarding: Yes\r\n");
# Cabecera para que el nuevo branch y el actual (via
outbound) # no se tengan que volver a autenticar en "auth".
append_hf("Authenticated: Yes\r\n");
append_branch();
$ru = $avp(s:forwarding_uri);
remove_hf("Forwarding"); # En el INVITE original
modificado a la URI del forwarding quitamos esta cabecera pues la URI del
forwarding podría contener a su vez otro forwarding.
# Enviamos el INVITE modificado con la
URI del forwarding a
outbound. # Si tiene que volver ya volverá.
route(9); # Outbound.
exit;
Bueno, corrijo esto último, ya que el outbound sólo tiene sentido si el
forwarding es a un dominio externo. Realmente lo dejo así:
if (is_uri_host_local()) {
route(1); # t_route y tal.
}
else {
route(9); # Outbound.
}
exit;
}
}
--
Iñaki Baz Castillo