Deti Fliegl
2005-Feb-16 10:31 UTC
[Asterisk-Users] [patch] fix libpri problem in Q931_INFORMATION handling
Hi there, I tried to use Voicemail from a PRI interface but it didn't work because pressing a key on the ISDN phone just caused Q931_IE_KEYPAD_FACILITY messages which are normally handled by a bri-stuffed libpri. Unfortunately a wrong if condition stops keypad messages from being passed to the channel driver. The patch attached to this mail removes the 2 lines from the code. Did I misunderstand something or is there really a bug? Deti --- q931.c~ 2005-02-16 18:21:33.907803750 +0100 +++ q931.c 2005-02-16 18:21:33.909803485 +0100 @@ -2877,8 +2877,7 @@ q931_release_complete(pri,c,PRI_CAUSE_INVALID_CALL_REFERENCE); break; } - if (c->ourcallstate!=Q931_CALL_STATE_OVERLAP_RECEIVING) - break; + pri->ev.e = PRI_EVENT_INFO_RECEIVED; pri->ev.ring.call = c; pri->ev.ring.channel = c->channelno | (c->ds1no << 8);
Peter Svensson
2005-Feb-16 15:07 UTC
[Asterisk-Users] [patch] fix libpri problem in Q931_INFORMATION handling
On Wed, 16 Feb 2005, Deti Fliegl wrote:> I tried to use Voicemail from a PRI interface but it didn't work because > pressing a key on the ISDN phone just caused Q931_IE_KEYPAD_FACILITY > messages which are normally handled by a bri-stuffed libpri. > Unfortunately a wrong if condition stops keypad messages from being > passed to the channel driver. The patch attached to this mail removes > the 2 lines from the code. > > --- q931.c~ 2005-02-16 18:21:33.907803750 +0100 > +++ q931.c 2005-02-16 18:21:33.909803485 +0100 > @@ -2877,8 +2877,7 @@ > > q931_release_complete(pri,c,PRI_CAUSE_INVALID_CALL_REFERENCE); > break; > } > - if (c->ourcallstate!=Q931_CALL_STATE_OVERLAP_RECEIVING) > - break; > + > pri->ev.e = PRI_EVENT_INFO_RECEIVED; > pri->ev.ring.call = c; > pri->ev.ring.channel = c->channelno | (c->ds1no << 8);What is c->ourcallstate set to at this time? Can you provide a debug log (pri intense debug span xxx) of the call? Asterisk only expects INFORMATION elements when expecting overlap digits (i.e. before CONNECT, PROCEEDING etc). After that it expects digits as inline dtmf. According to Q.931 called party address IEs in the INFORMATION message should only be sent during overlap digit transmission, which ends when PROCEEDING is sent. Peter
Reasonably Related Threads
- [plyr] Moving average filter with plyr
- IPcortex: ERROR[23444] chan_zap.c: You cannot use cause 17 number when in state 6
- FW: IPcortex: ERROR[23444] chan_zap.c: You cannot use cause 17 number when in state 6
- Bristuffed Asterisk: Hangup problems
- Knowing incoming call technology and channel [SOLVED]