[SR-Users] Unregister with Multiple Contacts

Charles Phillips charles at rustybike.com
Sun Feb 21 14:11:49 CET 2021


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 at 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
> 
> 
> 
> 

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.kamailio.org/pipermail/sr-users/attachments/20210221/61819bc4/attachment.htm>


More information about the sr-users mailing list