[asterisk-bugs] [JIRA] (ASTERISK-29263) PJSIP
Flamur Dervishi (JIRA)
noreply at issues.asterisk.org
Mon Jan 25 09:13:59 CST 2021
Flamur Dervishi created ASTERISK-29263:
------------------------------------------
Summary: PJSIP
Key: ASTERISK-29263
URL: https://issues.asterisk.org/jira/browse/ASTERISK-29263
Project: Asterisk
Issue Type: Bug
Security Level: None
Components: pjproject/pjsip
Affects Versions: 16.15.0
Environment: debian x64
Reporter: Flamur Dervishi
Severity: Minor
We were experiencing a strange behaviour with the device state when using 'devicestate_busy_at' option.
With 'devicestate_busy_at' set to 2, after an endpoint would receive 2 calls, its device state would be set to 'Busy'. However when a 3rd call is in play, the device state changed to 'In use', when it still needs to be 'Busy' in respect of 'devicestate_busy_at' value.
After some investigation in the 'chan_pjsip.c' file, in the function 'chan_pjsip_devicestate' we noticed that the condition to check if the 'devicestate_busy_at' is reached is wrong.
static int chan_pjsip_devicestate(const char *data)
{
...
if (endpoint->devicestate_busy_at && (inuse == endpoint->devicestate_busy_at)) {
state = AST_DEVICE_BUSY;
} else if (ast_devstate_aggregate_result(&aggregate) != AST_DEVICE_INVALID) {
state = ast_devstate_aggregate_result(&aggregate);
}
...
}
Should be:
static int chan_pjsip_devicestate(const char *data)
{
...
if (endpoint->devicestate_busy_at && (inuse >= endpoint->devicestate_busy_at)) {
state = AST_DEVICE_BUSY;
} else if (ast_devstate_aggregate_result(&aggregate) != AST_DEVICE_INVALID) {
state = ast_devstate_aggregate_result(&aggregate);
}
...
}
Meaning, the device state will be 'Busy' when the 'devicestate_busy_at' is reached or exceeded, and not only when it is equal to 'devicestate_busy_at' value
--
This message was sent by Atlassian JIRA
(v6.2#6252)
More information about the asterisk-bugs
mailing list