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

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