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-0600 | Date Closed: | 2010-11-19 18:52:50.000-0600 |
Priority: | Minor | Regression? | No |
Status: | Closed/Complete | Components: | 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 |