[SR-Users] Registering "upstream" with the uac module, but with authentication

Steve Davies steve-lists-srusers at connection-telecom.com
Tue Sep 17 14:43:19 CEST 2013

On 17 September 2013 14:23, Daniel-Constantin Mierla <miconda at gmail.com>wrote:

> For the received field, you should call fix_nated_register() when you get
> the REGISTER (not for the reply). Or build the value for received_avp (
> http://kamailio.org/docs/modules/stable/modules/registrar.html#idp84696)
> manually in config from source ip, source port and transport.

I already have and call this route block:  (WITH_NAT is defined)

# Caller NAT detection route
route[NATDETECT] {
#!ifdef WITH_NAT
if (nat_uac_test("19")) {
if (is_method("REGISTER")) {
} else {
if (!is_method("BYE")) {

But there is no NAT between the phone and Kamailio, so fix_nated_register
isn't called.  And there is nothing to fix about the incoming register.

But the register goes out on a different interface with a different
address.  And the reply comes back on that interface.

So I presume the issue with the received/socket is that save() derived them
off the reply.

> With the socket is a bit more complex in this case, with multiple network
> interfaces, it can be set via a header, but msg_apply_changes() works on
> reply only with development version. Practically is about using the two
> parameters of registrar module:
> - http://kamailio.org/docs/modules/stable/modules/registrar.html#idp115832
> It might me easier to make a patch to provide custom socket value via an
> avp (like for received value), instead of header (this with header was
> added long time ago for replicated registrations).
> Is the subscriber having more than one phone? Or is restricted to have
> only one device? IIRC, with some (old?) versions of asterisk, only one
> phone was used. If it is only for one phone, you can try a different
> approach:

The subscriber is not restricted to only having one phone - they can
register more than one.  The downstream service supports that fine.
 Kamailio can support it and I don't want to introduce a restriction since
customers often have a desk phone and also want to use a soft client on
mobile phone or similar.

- use save() with no reply flag for REGISTER
> - forward the register downstream
> - in failure route, if it is a reply received from downstream, use
> unregister()
> There will be a short time window that the phone is registered locally.
> You can optimize it to call save() only when Authorization header is
> present in REGISTER, as you know downstream is always authenticating.
So apart from dealing with the multiple registrations this seems like a
promising approach.

Another idea: can I do "append_branch" for a register?  If so, can I turn a
register to the downstream service into a register for both the downstream
service and my local registrar?

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.sip-router.org/pipermail/sr-users/attachments/20130917/41deb169/attachment.html>

More information about the sr-users mailing list