[Home]

Summary:ASTERISK-16933: EID is not copied when event is received from XMPP and forwarded into Asterisk's core
Reporter:klaus3000 (klaus3000)Labels:
Date Opened:2010-11-08 17:20:53.000-0600Date Closed:2010-11-19 18:52:50.000-0600
Priority:MinorRegression?No
Status:Closed/CompleteComponents:Resources/res_jabber
Versions:Frequency of
Occurrence
Related
Issues:
Environment:Attachments:
Description:see
http://lists.digium.com/pipermail/asterisk-dev/2010-November/046898.html
and
http://lists.digium.com/pipermail/asterisk-dev/2010-November/046914.html
Comments:By: klaus3000 (klaus3000) 2010-11-14 12:25:59.000-0600

FYI: The patch from ASTERISK-16937 fixed also the problem with state distribution via XMPP. So I do not know if this bug report is valid.

By: Bradley Watkins (marquis) 2010-11-16 13:12:19.000-0600

klaus3000:  After looking at the XMPP PubSub code again, I realized that my recollection of it was imperfect.  It does indeed already send the EID into the event core, unless the EID is its own (in which case the whole event is dropped as it should be).

So yes, the fix from 18284 is all that should be necessary.

By: klaus3000 (klaus3000) 2010-11-16 13:27:01.000-0600

Great. So this one can be closed.

By: Digium Subversion (svnbot) 2010-11-19 18:45:54.000-0600

Repository: asterisk
Revision: 295710

U   branches/1.6.2/include/asterisk/event.h
U   branches/1.6.2/main/event.c

------------------------------------------------------------------------
r295710 | russell | 2010-11-19 18:45:52 -0600 (Fri, 19 Nov 2010) | 29 lines

Fix cache of device state changes for multiple servers.

This patch addresses a regression where device states across multiple servers
were not being processing completely correctly.  The code works to determine
the overall state by looking at the last known state of a device on each
server.  However, there was a regression due to some invasive rewrites of how
the cache works that led to the cache only storing the last device state change
for a device, regardless of which server it was on.

The code is set up to cache device state change events by ensuring that each
event in the cache has a unique device name + entity ID (server ID).  The code
that was responsible for comparing raw information elements (which EID is)
always returned a match due to a memcmp() with a length of 0.

There isn't much code to fix the actual bug.  This patch also introduces a new
CLI command that was very useful for debugging this problem.  The command
allows you to dump the contents of the event cache.

(closes issue ASTERISK-16937)
Reported by: klaus3000
Patches:
     issue18284.rev1.txt uploaded by russell (license 2)
Tested by: russell, klaus3000

(closes issue ASTERISK-16933)
Reported by: klaus3000

Review: https://reviewboard.asterisk.org/r/1012/

------------------------------------------------------------------------

http://svn.digium.com/view/asterisk?view=rev&revision=295710

By: Digium Subversion (svnbot) 2010-11-19 18:50:01.000-0600

Repository: asterisk
Revision: 295711

_U  branches/1.8/
U   branches/1.8/include/asterisk/event.h
U   branches/1.8/main/event.c

------------------------------------------------------------------------
r295711 | russell | 2010-11-19 18:50:00 -0600 (Fri, 19 Nov 2010) | 36 lines

Merged revisions 295710 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.6.2

........
 r295710 | russell | 2010-11-19 18:45:51 -0600 (Fri, 19 Nov 2010) | 29 lines
 
 Fix cache of device state changes for multiple servers.
 
 This patch addresses a regression where device states across multiple servers
 were not being processing completely correctly.  The code works to determine
 the overall state by looking at the last known state of a device on each
 server.  However, there was a regression due to some invasive rewrites of how
 the cache works that led to the cache only storing the last device state change
 for a device, regardless of which server it was on.
 
 The code is set up to cache device state change events by ensuring that each
 event in the cache has a unique device name + entity ID (server ID).  The code
 that was responsible for comparing raw information elements (which EID is)
 always returned a match due to a memcmp() with a length of 0.
 
 There isn't much code to fix the actual bug.  This patch also introduces a new
 CLI command that was very useful for debugging this problem.  The command
 allows you to dump the contents of the event cache.
 
 (closes issue ASTERISK-16937)
 Reported by: klaus3000
 Patches:
       issue18284.rev1.txt uploaded by russell (license 2)
 Tested by: russell, klaus3000
 
 (closes issue ASTERISK-16933)
 Reported by: klaus3000
 
 Review: https://reviewboard.asterisk.org/r/1012/
........

------------------------------------------------------------------------

http://svn.digium.com/view/asterisk?view=rev&revision=295711

By: Digium Subversion (svnbot) 2010-11-19 18:52:49.000-0600

Repository: asterisk
Revision: 295712

_U  trunk/
U   trunk/include/asterisk/event.h
U   trunk/main/event.c

------------------------------------------------------------------------
r295712 | russell | 2010-11-19 18:52:48 -0600 (Fri, 19 Nov 2010) | 43 lines

Merged revisions 295711 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.8

................
 r295711 | russell | 2010-11-19 18:50:00 -0600 (Fri, 19 Nov 2010) | 36 lines
 
 Merged revisions 295710 via svnmerge from
 https://origsvn.digium.com/svn/asterisk/branches/1.6.2
 
 ........
   r295710 | russell | 2010-11-19 18:45:51 -0600 (Fri, 19 Nov 2010) | 29 lines
   
   Fix cache of device state changes for multiple servers.
   
   This patch addresses a regression where device states across multiple servers
   were not being processing completely correctly.  The code works to determine
   the overall state by looking at the last known state of a device on each
   server.  However, there was a regression due to some invasive rewrites of how
   the cache works that led to the cache only storing the last device state change
   for a device, regardless of which server it was on.
   
   The code is set up to cache device state change events by ensuring that each
   event in the cache has a unique device name + entity ID (server ID).  The code
   that was responsible for comparing raw information elements (which EID is)
   always returned a match due to a memcmp() with a length of 0.
   
   There isn't much code to fix the actual bug.  This patch also introduces a new
   CLI command that was very useful for debugging this problem.  The command
   allows you to dump the contents of the event cache.
   
   (closes issue ASTERISK-16937)
   Reported by: klaus3000
   Patches:
         issue18284.rev1.txt uploaded by russell (license 2)
   Tested by: russell, klaus3000
   
   (closes issue ASTERISK-16933)
   Reported by: klaus3000
   
   Review: https://reviewboard.asterisk.org/r/1012/
 ........
................

------------------------------------------------------------------------

http://svn.digium.com/view/asterisk?view=rev&revision=295712