----------------------------------------------------------- This is an automatically generated e-mail. To reply, visit: https://reviewboard.asterisk.org/r/3490/#review11786 -----------------------------------------------------------
Ship it! Ship It! - Matt Jordan On April 29, 2014, 9:20 a.m., Mark Michelson wrote: > > ----------------------------------------------------------- > This is an automatically generated e-mail. To reply, visit: > https://reviewboard.asterisk.org/r/3490/ > ----------------------------------------------------------- > > (Updated April 29, 2014, 9:20 a.m.) > > > Review request for Asterisk Developers. > > > Bugs: ASTERISK-23672 > https://issues.asterisk.org/jira/browse/ASTERISK-23672 > > > Repository: testsuite > > > Description > ------- > > In ASTERISK-23672, it was reported that when the presence state of an entity > was changed such that the state was the same but the subtype or message > differed from what was previously set, NOTIFYs were not sent to SIP > subscribers. Looking at the code, it appeared that res_pjsip_exten_state was > being overzealous in trying to filter out repeated state changes and that the > core PBX code already performed the necessary filtering. > > I made the following change to res_pjsip_exten_state.c, which I'm not placing > in its own review due to its small size: > > Index: res/res_pjsip_exten_state.c > =================================================================== > --- res/res_pjsip_exten_state.c (revision 412578) > +++ res/res_pjsip_exten_state.c (working copy) > @@ -334,11 +334,6 @@ > struct notify_task_data *task_data; > struct exten_state_subscription *exten_state_sub = data; > > - if (exten_state_sub->last_exten_state == info->exten_state && > - exten_state_sub->last_presence_state == info->presence_state) { > - return 0; > - } > - > if (!(task_data = alloc_notify_task_data(exten, exten_state_sub, > info))) { > return -1; > } > > I then created three testsuite tests to ensure that behavior is as we expect > for it to be: > > devstate_repeat: This relies on the device state for a custom device state to > be "not in use" initially. A subscriber subscribes to a custom device state. > We then set a device state change for the custom device state to be "not in > use". Since there is no change in the device state, no NOTIFY should be sent > to the subscriber. > presencestate_repeat: This sets an initial presence state for a > CustomPresence entity. A SIP subscriber subscribes to the custom presence > state. We then set the presence state to the exact same value again and > ensure that no additional NOTIFYs are sent to the subscriber. > presencestate_repeat_okay: This sets an initial presence state for a > CustomPresence entity. A SIP subscriber subscribes to the custom presence > state. We then change the presence state twice. The first change keeps the > same state and message and changes the subtype. The second change keeps the > same state and subtype and changes the message. These should result in two > additional NOTIFYs being sent to the subscriber. > > > Diffs > ----- > > /asterisk/trunk/tests/channels/pjsip/subscriptions/presence/tests.yaml 5004 > > /asterisk/trunk/tests/channels/pjsip/subscriptions/presence/presencestate_repeat_okay/test-config.yaml > PRE-CREATION > > /asterisk/trunk/tests/channels/pjsip/subscriptions/presence/presencestate_repeat_okay/sipp/subscribe.xml > PRE-CREATION > > /asterisk/trunk/tests/channels/pjsip/subscriptions/presence/presencestate_repeat_okay/repeat_presence_state.py > PRE-CREATION > > /asterisk/trunk/tests/channels/pjsip/subscriptions/presence/presencestate_repeat_okay/configs/ast1/pjsip.conf > PRE-CREATION > > /asterisk/trunk/tests/channels/pjsip/subscriptions/presence/presencestate_repeat_okay/configs/ast1/extensions.conf > PRE-CREATION > > /asterisk/trunk/tests/channels/pjsip/subscriptions/presence/presencestate_repeat/test-config.yaml > PRE-CREATION > > /asterisk/trunk/tests/channels/pjsip/subscriptions/presence/presencestate_repeat/sipp/subscribe.xml > PRE-CREATION > > /asterisk/trunk/tests/channels/pjsip/subscriptions/presence/presencestate_repeat/repeat_presence_state.py > PRE-CREATION > > /asterisk/trunk/tests/channels/pjsip/subscriptions/presence/presencestate_repeat/configs/ast1/pjsip.conf > PRE-CREATION > > /asterisk/trunk/tests/channels/pjsip/subscriptions/presence/presencestate_repeat/configs/ast1/extensions.conf > PRE-CREATION > > /asterisk/trunk/tests/channels/pjsip/subscriptions/presence/devstate_repeat/test-config.yaml > PRE-CREATION > > /asterisk/trunk/tests/channels/pjsip/subscriptions/presence/devstate_repeat/sipp/subscribe.xml > PRE-CREATION > > /asterisk/trunk/tests/channels/pjsip/subscriptions/presence/devstate_repeat/repeat_device_state.py > PRE-CREATION > > /asterisk/trunk/tests/channels/pjsip/subscriptions/presence/devstate_repeat/configs/ast1/pjsip.conf > PRE-CREATION > > /asterisk/trunk/tests/channels/pjsip/subscriptions/presence/devstate_repeat/configs/ast1/extensions.conf > PRE-CREATION > > Diff: https://reviewboard.asterisk.org/r/3490/diff/ > > > Testing > ------- > > Prior to the diff mentioned in the description, devstate_repeat and > presencestate_repeat would pass, but presencestate_repeat_okay would not. > With the diff above applied, all three tests pass. > > > Thanks, > > Mark Michelson > >
-- _____________________________________________________________________ -- Bandwidth and Colocation Provided by http://www.api-digital.com -- asterisk-dev mailing list To UNSUBSCRIBE or update options visit: http://lists.digium.com/mailman/listinfo/asterisk-dev