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@10.0.0.7:2001;ob Expires: 900
SIP/2.0 200 OK Contact:sip:me@10.0.0.7:2001;ob;expires=900;received="sip:1.2.3.4:3001"
REGISTER sip:somedomain.com Contact:sip:me@1.2.3.4:3001;transport=UDP;ob Contact:sip:me@10.0.0.7:2001;ob;expires=0 Expires: 900
SIP/2.0 200 OK Contact: sip:me@10.0.0.7:2001;ob;expires=900;received="sip:1.2.3.4:3001", sip:me@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@lists.sip-router.org http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users