ast_device_state() gets called in two different ways. The first way is when
called from elsewhere in Asterisk to find the current state of a device. In that case, we want to use the cached value if it exists. The other way is when processing a device state change. In that case, we do not want to check the cache because returning the last known state is counter productive. git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@133945 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
parent
c978cc1e26
commit
ac79d99fa6
1 changed files with 10 additions and 2 deletions
|
@ -327,7 +327,7 @@ static enum ast_device_state devstate_cached(const char *device)
|
||||||
}
|
}
|
||||||
|
|
||||||
/*! \brief Check device state through channel specific function or generic function */
|
/*! \brief Check device state through channel specific function or generic function */
|
||||||
enum ast_device_state ast_device_state(const char *device)
|
static enum ast_device_state _ast_device_state(const char *device, int check_cache)
|
||||||
{
|
{
|
||||||
char *buf;
|
char *buf;
|
||||||
char *number;
|
char *number;
|
||||||
|
@ -379,6 +379,14 @@ enum ast_device_state ast_device_state(const char *device)
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
enum ast_device_state ast_device_state(const char *device)
|
||||||
|
{
|
||||||
|
/* This function is called from elsewhere in the code to find out the
|
||||||
|
* current state of a device. Check the cache, first. */
|
||||||
|
|
||||||
|
return _ast_device_state(device, 1);
|
||||||
|
}
|
||||||
|
|
||||||
/*! \brief Add device state provider */
|
/*! \brief Add device state provider */
|
||||||
int ast_devstate_prov_add(const char *label, ast_devstate_prov_cb_type callback)
|
int ast_devstate_prov_add(const char *label, ast_devstate_prov_cb_type callback)
|
||||||
{
|
{
|
||||||
|
@ -465,7 +473,7 @@ static void do_state_change(const char *device)
|
||||||
{
|
{
|
||||||
enum ast_device_state state;
|
enum ast_device_state state;
|
||||||
|
|
||||||
state = ast_device_state(device);
|
state = _ast_device_state(device, 0);
|
||||||
|
|
||||||
ast_debug(3, "Changing state for %s - state %d (%s)\n", device, state, devstate2str(state));
|
ast_debug(3, "Changing state for %s - state %d (%s)\n", device, state, devstate2str(state));
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue