-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviewboard.asterisk.org/r/3771/
-----------------------------------------------------------

Review request for Asterisk Developers.


Bugs: ASTERISK-24038
    https://issues.asterisk.org/jira/browse/ASTERISK-24038


Repository: Asterisk


Description
-------

In Asterisk, it is possible for a device to have a status of ONHOLD. This is 
not typically an easy thing to determine, as a channel being on hold is not a 
direct channel state. Typically, this has to be calculated outside of the core 
independently in channel drivers, notably, chan_sip and chan_pjsip. Both of 
these channel drivers already have to calculate device state in a fashion more 
complex than the core can handle, as they aggregate all state of all channels 
associated with a peer/endpoint; they also independently track whether or not 
one of those channels is currently on hold and mark the device state 
appropriately.

In 12+, we now have the ability to report a AST_DEVICE_ONHOLD state for all 
channels that defer their device state to the core. This is due to channel hold 
state actually now being tracked on the channel itself. If a channel driver 
defers its device state to the core (which many, such as DAHDI, IAX2, and 
others do in most situations), the device state core already goes out to get a 
channel associated with the device. As such, it can now also factor the channel 
hold state in its calculation.

This patch adds this logic to the device state core. It also uses an existing 
mapping between device state and channel state to handle more channel states. 
chan_pjsip has been updated slightly as well to make use of this (as it was, 
for some reason, reporting a channel state of BUSY as a device state of INUSE, 
which feels slightly wrong).


Diffs
-----

  /trunk/main/devicestate.c 418565 
  /trunk/channels/chan_pjsip.c 418565 

Diff: https://reviewboard.asterisk.org/r/3771/diff/


Testing
-------

Some manual testing was done. Additionally, the pjsip hold test was modified to 
report back the device state using the DEVICE_STATE function which verified the 
correct hold state coming back from that channel driver.

New tests should be added to check the core logic; this review will be updated 
when those tests are added.


Thanks,

Matt Jordan

-- 
_____________________________________________________________________
-- 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

Reply via email to