Saturday, January 12, 2008

[asterisk-users] ISDN channels not properly released after call

Hello everyone,

I'm using very simple setup to make and receive external ISDN calls through a
softphone (x-lite version 3.0 - Win32) via an asterisk box.

Hardware setup:

- Dialogic Diva BRI (lspci yields: Network controller: Eicon
Technology Corporation DIVA Server BRI-2M/-2F (rev 01))
- ISDN BRI line

Software setup:

- Redhat 9
- asterisk-1.4.16.2
- chan_capi-1.0.2

Asterisk configuration files are as follows:

/etc/asterisk/capi.conf
[general]
nationalprefix=0
internationalprefix=0030
rxgain=1.0 ;linear receive gain (1.0 = no change)
txgain=1.0 ;linear transmit gain (1.0 = no change)
language=de ;set default language

[ISDN1]
isdnmode=msn ;'MSN' (point-to-multipoint) or 'DID' (direct inward dial)
incomingmsn=* ;allow incoming calls to this list of MSNs/DIDs, * = any
controller=1 ;capi controller number of this interface/port
group=1 ;dialout group
softdtmf=on ;enable/disable software dtmf detection,
recommended for AVM cards
relaxdtmf=on ;in addition to softdtmf, you can use relaxed
dtmf detection
faxdetect=off ;enable faxdetection and redirection to EXTEN
'fax' for incoming and/or
accountcode= ;PBX accountcode to use in CDRs
context=capi-in ;context for incoming calls
echocancelold=yes;use facility selector 6 instead of correct 8
(necessary for older eicon drivers)
devices=2 ;number of concurrent calls (b-channels) on this controller

/etc/asterisk/extensions.conf
[general]
autofallthrough=yes

[capi-in]
;calls from isdn interface card
exten => 2104999999,1,Answer()
exten => 2104999999,n,Dial(SIP/1000)
exten => 2104999999,n,Hangup()

[internal]
;calls from internal sip phones
exten => _210XXXXXXX,1,Dial(CAPI/ISDN1/${EXTEN})
exten => _210XXXXXXX,n,Congestion()
exten => _210XXXXXXX,n,Hangup()


/etc/asterisk/sip.conf
[1000]
type=friend
context=internal
host=dynamic

For inbound calls, eveything works smoothly; I can receive calls on the
softphone successfully.

For outbound calls(PSTN), the number is called successfully and the phone rings
on the other end:

-- Registered SIP '1000' at 192.168.0.6 port 35884 expires 3600
-- Executing [2104988888@internal:1] Dial("SIP/1000-081daa48",
"CAPI/ISDN1/2104988888") in new stack
-- Called ISDN1/2104988888
-- CAPI/ISDN1#02/2104988888-0 is proceeding passing it to SIP/1000-081daa48
-- CAPI/ISDN1#02/2104988888-0 is making progress passing it to
SIP/1000-081daa48
-- CAPI/ISDN1#02/2104988888-0 is ringing

From there on:

1. If the other end picks up the phone the conversation is successful and when
the conversation ends, the channel is properly released:

-- CAPI/ISDN1#02/2104988888-0 answered SIP/1000-081d91b0
== ISDN1#02: CAPI Hangingup for PLCI=0x101 in state 2
== Spawn extension (internal, 2104988888, 1) exited non-zero on
'SIP/1000-081d91b0'
> ISDN1#02: CAPI INFO 0x3490: Normal call clearing

2. BUT: If I hangup the softphone before someone answers, I get:

== ISDN1#02: CAPI Hangingup for PLCI=0x101 in state 5

and the 1st channel is left occupied:

atlas*CLI> capi show channels
CAPI B-channel information:
Line-Name NTmode state i/o bproto isdnstate ton number
----------------------------------------------------------------
ISDN1#02 no discP O trans *P 0x00 '1000'->'2104988888'
ISDN1#01 no ----- - trans 0x00 ''->''

If I call again and hangup before someone answers, the 2nd channel is used and
then left occupied:

atlas*CLI> capi show channels
CAPI B-channel information:
Line-Name NTmode state i/o bproto isdnstate ton number
----------------------------------------------------------------
ISDN1#02 no discP O trans *P 0x00 '1000'->'2104988888'
ISDN1#01 no discP O trans * 0x00 '1000'->'2104988888'

From there on I cannot make any other calls because there are no
available channels:

-- Executing [2104988888@internal:1] Dial("SIP/1000-081d91a0",
"CAPI/ISDN1/2104988888") in new stack
-- didn't find capi device for interface 'ISDN1'
[Jan 12 16:20:16] WARNING[3359]: app_dial.c:1191 dial_exec_full:
Unable to create channel of type 'CAPI' (cause 44 - Requested channel
not available)
== Everyone is busy/congested at this time (1:0/0/1)
-- Executing [2104988888@internal:2]
Congestion("SIP/1000-081d91a0", "") in new stack
== Spawn extension (internal, 2104988888, 2) exited non-zero on
'SIP/1000-081d91a0'

So, the question is: Why aren't the channels normaly released???

Thanx in advance,
Antonis

P.S. Sorry for writting so much...

_______________________________________________
-- Bandwidth and Colocation Provided by http://www.api-digital.com --

asterisk-users mailing list
To UNSUBSCRIBE or update options visit:

http://lists.digium.com/mailman/listinfo/asterisk-users

No comments: