Hi Henning,
thanks for the pointer!

I’ve implemented the per‑transport behavior by relying on the registrar save() 
flags only for UDP, while keeping the module‑level max_contacts for WebSocket 
transports:

modparam("registrar", "max_contacts", 5) → allow up to 5 contacts by default 
(used for WS/WSS).

For WS/WSS I call save("location") with no special flags.

For UDP I call save("location", "0x04") to keep exactly one contact for the AoR.

Config snippet:

# WS/WSS: allow up to max_contacts (5)
if (proto == WS || proto == WSS) {
    if (!save("location")) {
        xlog("L_ERR", "[$ci] WS(S) save() failed for $tU@$td\n");
        sl_reply_error();
        exit;
    }
    xlog("L_INFO", "[$ci] WS(S) registration stored for $tU@$td\n");
    exit;
}

# UDP: keep only one contact per AoR
if (proto == UDP) {
    if (!save("location", "0x04")) {
        xlog("L_ERR", "[$ci] UDP save(0x04) failed (one-contact policy) for 
$tU@$td\n");
        sl_reply_error();
        exit;
    }
    xlog("L_INFO", "[$ci] UDP registration stored (one-contact policy) for 
$tU@$td\n");
    exit;
}

Looks ok for me, Is this what you are referring Right ?
Point me here if i am doing wrong.

Thanks
_______________________________________________
Kamailio - Development Mailing List -- sr-dev@lists.kamailio.org
To unsubscribe send an email to sr-dev-le...@lists.kamailio.org
Important: keep the mailing list in the recipients, do not reply only to the 
sender!

Reply via email to