[asterisk-bugs] [JIRA] (PRI-180) Incorrect handling of DISCONNECT with Progress Indicator #8
Alexandr Dranchuk (JIRA)
noreply at issues.asterisk.org
Mon Mar 21 06:25:56 CDT 2016
[ https://issues.asterisk.org/jira/browse/PRI-180?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=229966#comment-229966 ]
Alexandr Dranchuk commented on PRI-180:
---------------------------------------
Made a new tests with final patches from Gerrit.
Asterisk is running for 3 days under heavy load. All clear and fine.
Great work! Many thanks!
> Incorrect handling of DISCONNECT with Progress Indicator #8
> -----------------------------------------------------------
>
> Key: PRI-180
> URL: https://issues.asterisk.org/jira/browse/PRI-180
> Project: LibPRI
> Issue Type: Bug
> Security Level: None
> Components: General
> Affects Versions: 1.4.13
> Environment: Debian 7 / x64
> Reporter: Alexandr Dranchuk
> Assignee: Alexandr Dranchuk
> Severity: Minor
> Attachments: full_20160116_progress.txt, full_patch_test_log.txt, full_patch_with_progress_log.txt, jira_pri_180_v1.4.15.patch
>
>
> When we make an outgoing call by DAHDI / libpri 1.4.15, sometimes we get a DISCONNECT with Progress Indicator #8. Currently we just start to ignore DISCONNECT message if *inbanddisconnect=yes* are set in chan_dahdi.conf
> But after first DISCONNECT with Progress Indicator #8, we get second DISCONNECT without Progress Indicator, and thus have to release the call, not keep ignoring it.
> Current code not expecting second DISCONNECT message, only RELEASE but according ETS ISDN standards document, call can be finished by any of this messages.
> For now I've changed the line of q931.c from
> {code:title=q931.c|borderStyle=solid}
> UPDATE_OURCALLSTATE(ctrl, c, Q931_CALL_STATE_DISCONNECT_INDICATION);
> c->peercallstate = Q931_CALL_STATE_DISCONNECT_REQUEST;
> c->sendhangupack = 1;
> /* wait for a RELEASE so that sufficient time has passed
> for the inband audio to be heard */
> if (ctrl->acceptinbanddisconnect && (c->progressmask & PRI_PROG_INBAND_AVAILABLE))
> break;
> {code}
> to
> {code:title=q931.c|borderStyle=solid}
> if (ctrl->acceptinbanddisconnect && (c->progressmask & PRI_PROG_INBAND_AVAILABLE)) {
> if (c->ourcallstate != Q931_CALL_STATE_DISCONNECT_INDICATION) {
> UPDATE_OURCALLSTATE(ctrl, c, Q931_CALL_STATE_DISCONNECT_INDICATION);
> c->peercallstate = Q931_CALL_STATE_DISCONNECT_REQUEST;
> c->sendhangupack = 1;
> break;
> }
> }
>
> UPDATE_OURCALLSTATE(ctrl, c, Q931_CALL_STATE_DISCONNECT_INDICATION);
> c->peercallstate = Q931_CALL_STATE_DISCONNECT_REQUEST;
> c->sendhangupack = 1;
> {code}
> and tested. All works fine for me.
> Any help would be appreciated.
--
This message was sent by Atlassian JIRA
(v6.2#6252)
More information about the asterisk-bugs
mailing list