[asterisk-bugs] [JIRA] (PRI-180) Incorrect handling of DISCONNECT with Progress Indicator #8

Alexandr Dranchuk (JIRA) noreply at issues.asterisk.org
Thu Jan 21 07:16:33 CST 2016


    [ https://issues.asterisk.org/jira/browse/PRI-180?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=229103#comment-229103 ] 

Alexandr Dranchuk commented on PRI-180:
---------------------------------------

Hi Richard! Your patch looks more correct, but I can test it only at weekends on live environment.
BTW don't we should send any 183 Progress message toward calling party in case we have calling leg by SIP,
so it can open voice channels also?
As of now, according to call logs, to hear voice I had to call Progress() function at dialplan, but this is not really great way for me, always call it.

> 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, 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