[SR-Users] Incorrect registrar Expires handling

Daniel-Constantin Mierla miconda at gmail.com
Thu Jun 2 22:24:28 CEST 2011


Hello,

I looked in the code and the expires is taken from contact header 
parameter if present. Maybe you can run in higher debug level and see if 
you can spot something in the log messages that can give a lead.

Cheers,
Daniel

On 6/2/11 9:23 PM, Andreas Granig wrote:
> Hi,
>
> Found an interesting call-flow today where a client (pjsip) is behind
> NAT and behaves like this during registration (kamailio-3.1.3):
>
> REGISTER sip:somedomain.com
> Contact:<sip:me at 10.0.0.7:2001;ob>
> Expires: 900
>
> SIP/2.0 200 OK
> Contact:<sip:me at 10.0.0.7:2001;ob>;expires=900;received="sip:1.2.3.4:3001"
>
> REGISTER sip:somedomain.com
> Contact:<sip:me at 1.2.3.4:3001;transport=UDP;ob>
> Contact:<sip:me at 10.0.0.7:2001;ob>;expires=0
> Expires: 900
>
> SIP/2.0 200 OK
> Contact:
> <sip:me at 10.0.0.7:2001;ob>;expires=900;received="sip:1.2.3.4:3001",
> <sip:me at 1.2.3.4:3001;transport=UDP;ob>;expires=900
>
> So obviously the client is trying to unregister its private contact (for
> whatever reason - probably to play nice with registrars not supporting
> far-end NAT traversal), and tries to register the Contact with the
> "received" address instead. Kamailio however ignores the ";expires=0"
> for the private Contact and just saves both of them with the expiry
> value given in the Expires header.
>
> Taking the client behavior aside for now: is this the correct behavior
> of the registrar module? In RFC3261 chapter 10.2.1.1 it says:
>
> #+
> There are two ways in which a client can suggest an expiration interval
> for a binding: through an Expires header field or an "expires" Contact
> header parameter. The latter allows expiration intervals to be suggested
> on a per-binding basis when more than one binding is given in a single
> REGISTER request, whereas the former suggests an expiration interval for
> all Contact header field values that do not contain the "expires"
> parameter.
> #-
>
> So I'd say that in my specific case "expires" Contact header param
> (which is 0 for the binding having 10.0.0.7) should de-register this
> particular binding, whereas the Expires header should be applied to the
> second binding (having the 1.2.3.4) because it doesn't carry an
> "expires" param.
>
> Opinions on that one?
>
> Andreas
>
>
> _______________________________________________
> SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing list
> sr-users at lists.sip-router.org
> http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users

-- 
Daniel-Constantin Mierla -- http://www.asipto.com
http://linkedin.com/in/miconda -- http://twitter.com/miconda

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.sip-router.org/pipermail/sr-users/attachments/20110602/1da1ea16/attachment.htm>


More information about the sr-users mailing list