|Summary:||ASTERISK-21429: Distributed Device State using JABBER/XMPP not working since Secuity Advisory AST-2012-015|
|Reporter:||Alec Davis (alecdavis)||Labels:|
|Date Opened:||2013-04-13 05:25:36||Date Closed:||2013-04-17 08:59:40|
|Versions:||220.127.116.11 18.104.22.168 22.214.171.124 11.1.1 11.1.2 11.2.0 11.3.0||Frequency of|
|Environment:||SiteA SVN-branch-11-r376441 SiteB SVN-branch-11-r378321||Attachments:||( 0) r2452_diff3.txt|
|Description:||Prior to the cachable devicestate changes from ASTERISK-20175, both sites worked fine.
Site B is the site having issues, it doesn't update it's hints, and the phones that subscribe to the hint don't update there BLF.
Reverting back to asterisk-11-r378287 at SiteB and it works again.
SiteA is running a version without the devicestate cachable changes, thus is not sending the new IE cachable=1, but from what I can tell the default is to assume cachable.
|Comments:||By: Alec Davis (alecdavis) 2013-04-13 07:33:11.033-0500|
Tested with Site A not sending the IE 'cachable'.
'core show hints' at SiteB, correctly showed the ringing state of a phone in siteA.
By: Alec Davis (alecdavis) 2013-04-13 17:53:28.913-0500
This fixes the scenario when an older system doesn't send the IE cachable=1 in the XMPP message, to a newer system that expects to see it.
If the IE 'cachable' isn't present we need to default to AST_DEVSTATE_CACHABLE.
Assigning the cachable variable directly from ast_event_get_ie_uint is wrong, if the IE 'cachable' isn't found ast_event_get_ie_uint() will return 0, 0 = AST_DEVSTATE_NOT_CACHABLE
We need to read the 'cachable' IE into a string first, allowing us to check that it exists, if it doesn't exist then default to cachable=AST_DEVSTATE_CACHABLE.
If the 'cachable' IE does exist, then convert to a uint, validate value and go with it.
By: Alec Davis (alecdavis) 2013-04-13 18:34:02.365-0500
By: Alec Davis (alecdavis) 2013-05-10 00:10:28.964-0500
patch from reviewboard that was commited