On 05/26/2012 05:39 PM, Aft nix wrote:
Hi,
I'm trying to create a ruri from contact header like following :
In request route I've saved contact header in a hashtable using htable module. request_route{
#!ifdef WITH_HASH if (is_method("INVITE")&& !has_totag()){ xdbg ("Contact [$ct] with Callid [$ci]"); $sht(a=>$ci) = $ct; } #!endif
}
And in route[WITHINDLG]
route[WITHINDLG] {
#!ifdef WITH_HASH xdbg ("ruri [$ru]"); if ($sht(a=>$ci) != $ru){ $ru = ($sht(a=>$ci)); xdbg ("rewriting ruri to [$ru]"); } #!endif
But it log shows that its unable to parse the uri :
[4039]: DEBUG:<core> [parser/parse_uri.c:1277]: parse_uri: bad uri, state 0 parsed:<<sip> (4) /<sip:2020@103.23.169.2:64358> (29) : DEBUG:<core> [parser/parse_uri.c:1327]: ERROR: parse_sip_msg_uri: bad uri<sip:2020@103.23.169.2:64358> [4039]: ERROR: pv [pv_core.c:232]: failed to parse the R-URI [4039]: DEBUG:<script>: rewriting ruri to [<null>]
I'm not understanding what's wrong with that. May be the port part should be discarded, but how i'm gonna do that?
It looks like $sht(a=>$ci) is empty. I see that you have "xdbg ("Contact [$ct] with Callid [$ci]"); " line, but you didn't show us that line at the debug. If you add $ci to the debug information at the route[WITHINDLG] and show full debug from INVITE to BYE it will help to find where the mistake is.
And i think it would be better if you change _if ($sht(a=>$ci) != $ru)_ to _if ( $sht(a=>$ci) != $null && $sht(a=>$ci) != $ru)_ , because when $sht() is empty it always not equal to $ru.