A recent change made it so that device state changes that were
not actual "changes" would not get reported to subscribers. The
problem was that this inadvertently blocked presence updates as
well.
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@371113
65c4cc65-6c06-0410-ace0-
fbb531ad65f3
default: /* Tell user */
if (force) {
/* we must skip the next two checks for a queued state change or resubscribe */
- } else if (p->laststate == data->state && (~data->state & AST_EXTENSION_RINGING)) {
+ } else if ((p->laststate == data->state && (~data->state & AST_EXTENSION_RINGING)) &&
+ (p->last_presence_state == data->presence_state &&
+ !strcmp(p->last_presence_subtype, data->presence_subtype) &&
+ !strcmp(p->last_presence_message, data->presence_message))) {
/* don't notify unchanged state or unchanged early-state causing parties again */
sip_pvt_unlock(p);
return 0;