diff options
-rw-r--r-- | channels/chan_pjsip.c | 17 | ||||
-rw-r--r-- | main/devicestate.c | 9 |
2 files changed, 13 insertions, 13 deletions
diff --git a/channels/chan_pjsip.c b/channels/chan_pjsip.c index f638a1e35..8911b931a 100644 --- a/channels/chan_pjsip.c +++ b/channels/chan_pjsip.c @@ -872,17 +872,14 @@ static int chan_pjsip_devicestate(const char *data) snapshot = stasis_message_data(msg); - if (snapshot->state == AST_STATE_DOWN) { - ast_devstate_aggregate_add(&aggregate, AST_DEVICE_NOT_INUSE); - } else if (snapshot->state == AST_STATE_RINGING) { - ast_devstate_aggregate_add(&aggregate, AST_DEVICE_RINGING); - } else if ((snapshot->state == AST_STATE_UP) || (snapshot->state == AST_STATE_RING) || + if (chan_pjsip_get_hold(snapshot->uniqueid)) { + ast_devstate_aggregate_add(&aggregate, AST_DEVICE_ONHOLD); + } else { + ast_devstate_aggregate_add(&aggregate, ast_state_chan2dev(snapshot->state)); + } + + if ((snapshot->state == AST_STATE_UP) || (snapshot->state == AST_STATE_RING) || (snapshot->state == AST_STATE_BUSY)) { - if (chan_pjsip_get_hold(snapshot->uniqueid)) { - ast_devstate_aggregate_add(&aggregate, AST_DEVICE_ONHOLD); - } else { - ast_devstate_aggregate_add(&aggregate, AST_DEVICE_INUSE); - } inuse++; } } diff --git a/main/devicestate.c b/main/devicestate.c index 3580b1af7..c4a57dd68 100644 --- a/main/devicestate.c +++ b/main/devicestate.c @@ -304,9 +304,12 @@ enum ast_device_state ast_parse_device_state(const char *device) return AST_DEVICE_UNKNOWN; } - res = (ast_channel_state(chan) == AST_STATE_RINGING) ? AST_DEVICE_RINGING : AST_DEVICE_INUSE; - - chan = ast_channel_unref(chan); + if (ast_channel_hold_state(chan) == AST_CONTROL_HOLD) { + res = AST_DEVICE_ONHOLD; + } else { + res = ast_state_chan2dev(ast_channel_state(chan)); + } + ast_channel_unref(chan); return res; } |