Sorted it. I needed to loop through the contacts, then select the correct ruid based on
$ci
For completeness, here is my solution:
reg_fetch_contacts("location", "$fu", "un_reg");
$var(i) = 0;
while ($var(i) < $(ulc(un_reg=>count))) {
$var(ul_callid) = $(ulc(un_reg=>callid)[$var(i)]);
$var(ul_ruid) = $(ulc(un_reg=>ruid)[$var(i)]);
if ($var(ul_callid) == $ci) {
xlog("L_INFO", "Unregistering contact $tu Ruid:
$var(ul_ruid)\n");
unregister("location", "$fu", "$var(ul_ruid)");
$sht(regs=>$fU@$fd~$ci)=$null;
}
$var(i) = $var(i) + 1;
}
- Charles
On Feb 19, 2021, at 9:43 AM, Charles Phillips
<charles(a)rustybike.com> wrote:
Happy Friday!
To clean up contacts that have sent requests to unregister (Expires: 0) I am executing
the following after a 200 OK response from the upstream server:
reg_fetch_contacts("location", "$fu", "un_reg");
xlog("L_INFO", "Removing unregistered contact From: $si To: $tu Ruid:
$ulc(un_reg=>ruid)\n");
unregister("location", "$fu", "$ulc(un_reg=>ruid)”);
This produces the desired result when there is only one contact per AoR, but when
multiple contacts are present, it seems to delete the first ruid (which makes sense as I
am only providing the $fu).
So, the question, can I select the contact by call-id or some other unique identifier
specific to the desired contact that I can grab from the transaction? Reading the
reg_fetch_contact and unregister docs, they do not seem to provide for selection beyond
uri.
- Charles