summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--channels/chan_pjsip.c17
-rw-r--r--main/devicestate.c9
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;
}