-----Original Message----- From: Craig Southeren [mailto:craig@southeren.com] Sent: Monday, 6 June 2011 7:22 AM
...
To resume: What does SIP standard say about this NOTIFY with empty body? Does this mean that the user xyz is offline?
The specification gives no meaning to an empty body. "No meaning" does not mean "offline". Offline means something!
The only purpose of sending a NOTIFY with an empty body, as per the specification, is to finalise the establishment of a subscription when you do not yet have any state information. Any other use is "undocumented", so there had better be a large body of evidence that "everyone does it that way" before we use any semantics.
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.
Here is my understanding.
If the NOTIFY is the first NOTIFY sent in response to the SUBSCRIBE, then the NOTIFY should be ignored. Opal should be doing this.
if the NOTIFY is *not* the first NOTIFY, i.e. there was a previous NOTIFY that contains a valid presence status, then the previous status should be used.
Interestingly, I was doing some Googling on this and it appears that the first notify, when it is empty, is supposed to have a Subscription-State header field value of "pending". Again the specification is not clear but there were some discussion groups that mentioned this.
Unfortunately, Kamailio does not do this. So we could not even use this as a discriminator.
Robert Jongbloed OPAL/OpenH323/PTLib Architect and Co-founder.