[SR-Users] Meaning of empty body in NOTIFY

Daniel-Constantin Mierla miconda at gmail.com
Fri Jun 10 12:49:02 CEST 2011



On 6/10/11 12:27 PM, Eugen Dedu wrote:
> On 10/06/11 12:18, Daniel-Constantin Mierla wrote:
>> Hello,
>>
>> On 6/10/11 12:04 PM, Eugen Dedu wrote:
>>> Thank you very much for your answer.
>>>
>>> Do you confirm that for kamailio, when a user has not been online
>>> since a long time ago, (1) it answers with an empty body notify (and
>>> not with a body with Offline status), and more importantly (2) that
>>> this means the user is offline?
>>>
>>> I ask this because this seems contradictory to what SIP standard says
>>> (see below): it does not say that empty body means offline, but just
>>> does not have "meaningful state".
>>>
>>> In fact, opal (SIP library among others) developers (in CC) consider
>>> that empty body means no information (which is different than
>>> offline!), while kamailio uses it for offline!
>> it is not for online, it is like the others understood -- an empty body
>> does not change anything. Because of that I said that if the UA knew the
>> user is offline, it stays offline. When a UA has a user with online
>> state, if it is a notify with empty body, stays like that, nothing 
>> changes.
>
> Ok.  But this happens when I start my application, so it does not know 
> anything about the contacts, and it receives empty body.  So, even 
> after this notify, it still does not know anything about that contact, 
> is that right?
Any application (or those I used so far), they show the contacts offline 
at startup, this is the initial state. Kamailio notifies with presence 
states when there is a PUBLISH by the presentity. The notification with 
the empty body give the state of the subscription, not the state of 
contact -- see the subscription-state header in notify.
>
> Also, as the user is offline (not connected since long time ago), why 
> then kamailio sends an empty body for him instead of sending Offline 
> status?  This would allow the application to correctly show him as 
> offline, instead of "nothing known".  I noticed that even after 
> several minutes no Offline status is sent by kamailio.
The sip presence server sends in notify only the presence documents 
published by a user agent. If there is no such document, the sip server 
has nothing to send. I think there are some specs that allow a user to 
set default state, probably via xcap -- but I am not sure and I haven't 
searched ietf for it.

Cheers,
Daniel

>
>>> On 09/06/11 13:10, Daniel-Constantin Mierla wrote:
>>>> Hello,
>>>>
>>>> the notify is sent to inform about the state of the subscription, 
>>>> which
>>>> is active in this case. If it would the first subscription to that 
>>>> user
>>>> and force_active will not be set, then should be subscription state
>>>> pending, iirc.
>>>>
>>>> The empty body does not change anything to the phone information about
>>>> the watched presentity, which was known to be offline.
>>>>
>>>> Cheers,
>>>> Daniel
>>>>
>>>> On 6/8/11 10:06 PM, Eugen Dedu wrote:
>>>>> No idea?
>>>>>
>>>>> On 05/06/11 22:31, Eugen Dedu wrote:
>>>>>> Hi,
>>>>>>
>>>>>> ekiga.net registrar uses kamailio 1.5.3 (yes, a bit old...) and for
>>>>>> users who are not registered an empty NOTIFY body is returned when
>>>>>> asked
>>>>>> by a SUBSCRIBE. What does this mean from SIP standard point of
>>>>>> view, and
>>>>>> from kamailio point of view (are they identical?) I see in
>>>>>> RFC3265/3.1.6.2:
>>>>>> .... If the resource
>>>>>> has no meaningful state at the time that the SUBSCRIBE message is
>>>>>> processed, this NOTIFY message MAY contain an empty or neutral body
>>>>>> but is difficult for me to interpret what it means.
>>>>>>
>>>>>> Example: I ask the presence for a user xyz who registered and quit
>>>>>> application long time ago:
>>>>>>
>>>>>> SUBSCRIBE sip:xyz at ekiga.net SIP/2.0
>>>>>> CSeq: 1 SUBSCRIBE
>>>>>> Via: SIP/2.0/UDP
>>>>>> 82.238.108.175:5060;branch=z9hG4bKdabe824f-1a8e-e011-9efc-0024d693d8e8;rport 
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> User-Agent: Ekiga/3.3.1
>>>>>> From:
>>>>>> <sip:eugen.dedu at ekiga.net>;tag=4888824f-1a8e-e011-9efc-0024d693d8e8
>>>>>> Call-ID: f602824f-1a8e-e011-9efc-0024d693d8e8 at snoopy
>>>>>> Supported: eventlist
>>>>>> To: <sip:xyz at ekiga.net>
>>>>>> Accept: application/pidf+xml
>>>>>> Accept: multipart/related
>>>>>> Accept: application/rlmi+xml
>>>>>> Contact: <sip:eugen.dedu at 82.238.108.175:5060>
>>>>>> Allow:
>>>>>> INVITE,ACK,OPTIONS,BYE,CANCEL,SUBSCRIBE,NOTIFY,REFER,MESSAGE,INFO,PING,PRACK 
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> Expires: 300
>>>>>> Event: presence
>>>>>> Content-Length: 0
>>>>>> Max-Forwards: 70
>>>>>>
>>>>>> I receive the following answer:
>>>>>>
>>>>>> NOTIFY sip:eugen.dedu at 82.238.108.175:5060 SIP/2.0
>>>>>> CSeq: 1 NOTIFY
>>>>>> Via: SIP/2.0/UDP 86.64.162.35;branch=z9hG4bK2a99.b8a72c47.0
>>>>>> User-Agent: Kamailio (1.5.3-notls (i386/linux))
>>>>>> From: sip:xyz at ekiga.net;tag=f85b0bd16aaafa8479586ac9f88b3198-10a0
>>>>>> Call-ID: f602824f-1a8e-e011-9efc-0024d693d8e8 at snoopy
>>>>>> To: 
>>>>>> sip:eugen.dedu at ekiga.net;tag=4888824f-1a8e-e011-9efc-0024d693d8e8
>>>>>> Contact: <sip:86.64.162.35:5060>
>>>>>> Subscription-State: active;expires=370
>>>>>> Event: presence
>>>>>> Content-Length: 0
>>>>>> Max-Forwards: 70
>>>>>>
>>>>>> To resume: What does SIP standard say about this NOTIFY with empty
>>>>>> body?
>>>>>> Does this mean that the user xyz is offline?
>>>>>>
>>>>>> Or does this mean that user's status has not changed? In fact, the
>>>>>> NOTIFY with empty body (as shown above) is the first one sent by
>>>>>> kamailio, so there is no "previous" state of that user, hence
>>>>>> "unchanged" status has no meaning.
>>>>>>
>>>>>> Thank you,
>>
>
> _______________________________________________
> 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




More information about the sr-users mailing list