]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
Fix a comparison that was causing presence tests to fail.
authorMark Michelson <mmichelson@digium.com>
Fri, 10 Aug 2012 17:56:05 +0000 (17:56 +0000)
committerMark Michelson <mmichelson@digium.com>
Fri, 10 Aug 2012 17:56:05 +0000 (17:56 +0000)
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

channels/chan_sip.c

index db3cab86e45e6f4f676454d0a297828e66ba024a..eaaffebae03ff20ca03de2bbea64174b5ec79275 100644 (file)
@@ -15830,7 +15830,10 @@ static int extensionstate_update(const char *context, const char *exten, struct
        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;