[SR-Users] Unregister with Multiple Contacts
Charles Phillips
charles at rustybike.com
Sun Feb 21 14:59:01 CET 2021
With the below, we loop through all of the contacts that match $fu, but only unregister the one matching the $ci of the 200 OK that is associated with the unregister (Expires: 0) request from the upstream server.
It actually has 3 parts. For completeness, I probably should have added them all. Below:
route[REGISTRAR] {
….
do stuff
….
if (search_hf("Expires", "^0$", "a")) {
….
do stuff
….
t_on_reply("UNREGISTER");
xlog("L_INFO", "Processing unregister event from $si To: $tu\n");
route(RELAY);
exit;
}
….
do stuff
….
}
onreply_route[UNREGISTER] {
if (t_check_status("200")) {
route(UNREG);
}
}
route[UNREG] {
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 21, 2021, at 8:45 AM, David Villasmil <david.villasmil.work at gmail.com> wrote:
>
> Beware that since you’re removing all contacts, if any are valid and if any of the contacts that did not unregister is called, Kamailio won’t find them.
>
> If what you need is not force only one contact per user, maybe look at
> http://www.kamailio.net/docs/modules/5.4.x/modules/registrar.html#registrar.f.save <http://www.kamailio.net/docs/modules/5.4.x/modules/registrar.html#registrar.f.save>
>
> On Sun, 21 Feb 2021 at 13:14, Charles Phillips <charles at rustybike.com <mailto:charles at rustybike.com>> wrote:
> 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 <mailto: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
>>
>>
>>
>>
>
> _______________________________________________
> Kamailio (SER) - Users Mailing List
> sr-users at lists.kamailio.org <mailto:sr-users at lists.kamailio.org>
> https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users <https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users>
> --
> Regards,
>
> David Villasmil
> email: david.villasmil.work at gmail.com <mailto:david.villasmil.work at gmail.com>
> phone: +34669448337
> _______________________________________________
> Kamailio (SER) - Users Mailing List
> sr-users at lists.kamailio.org
> https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.kamailio.org/pipermail/sr-users/attachments/20210221/614d5364/attachment.htm>
More information about the sr-users
mailing list