|
|
|
@ -9,16 +9,19 @@ modparam("nathelper", "sipping_from", "sip:sipcheck@MY_HOSTNAME") |
|
|
|
route[NAT_TEST_AND_CORRECT] |
|
|
|
{ |
|
|
|
if (is_present_hf("Record-Route")) { |
|
|
|
$var(i) = $rr_count; |
|
|
|
## We witnessed this loop execute more than |
|
|
|
## 500 times, probably do to inability to |
|
|
|
## allocate rr_count or the parser. Either |
|
|
|
## way ensure the while loop is not unbound'd |
|
|
|
while($var(i) > 0 && $var(i) < 30) { |
|
|
|
$var(i) = $var(i) - 1; |
|
|
|
$var(rr) = $(hdr(Record-Route)[$var(i)]); |
|
|
|
if (!is_myself("$(var(rr){nameaddr.uri})")) { |
|
|
|
setflag(FLAG_SKIP_NAT_CORRECTION); |
|
|
|
$var(i) = 0; |
|
|
|
$var(rr_count) = $rr_count; |
|
|
|
while($var(i) < $var(rr_count)) { |
|
|
|
$var(rr_base) = $(hdr(Record-Route)[$var(i)]); |
|
|
|
$var(rr_idx) = 0; |
|
|
|
$var(rr) = $(var(rr_base){s.select,$var(rr_idx),,}); |
|
|
|
while($var(rr) != $null && $var(rr) != "") { |
|
|
|
$var(i) = $var(i) + 1; |
|
|
|
if (!is_myself("$(var(rr){nameaddr.uri})")) { |
|
|
|
setflag(FLAG_SKIP_NAT_CORRECTION); |
|
|
|
} |
|
|
|
$var(rr_idx) = $var(rr_idx) + 1; |
|
|
|
$var(rr) = $(var(rr_base){s.select,$var(rr_idx),,}); |
|
|
|
} |
|
|
|
} |
|
|
|
} else if ($Rp == "5080") { |
|
|
|
|