Confbridge Doesn’t Kick Chan_local

Home » Asterisk Users » Confbridge Doesn’t Kick Chan_local
Asterisk Users 3 Comments

I have a confbridge setup that feeds the conference from the ALSA
microphone input (this is the conference leader) and then uses app_ices to send the conference audio to icecast.

I start the conference leader like this:

console dial 1000_admin@conferences

I join the ices user to the confbridge with a call file:

Channel: Local/1000@conferences MaxRetries: 2
RetryTime: 60
WaitTime: 30
Context: conferences Extension: 1000_ices Priority: 1

This all seems to work great until I need to kill the conference. My confbridge user profile sets all users up with end_marked=yes so that they should be kicked when the leader exits. The Local channel doesn’t seem to exit properly:

<< Hangup on console >>
— Stopped music on hold on Local/1000@conferences-00000000;2
Playing
‘custom/thank-you.slin’ (language ‘en’)
— Executing [1000@conferences:2]
Hangup(“Local/1000@conferences-00000000;2”, “”) in new stack
== Spawn extension (conferences, 1000, 2) exited non-zero on
‘Local/1000@conferences-00000000;2’
== Spawn extension (conferences, 1000_ices, 4) exited non-zero on
‘Local/1000@conferences-00000000;1’
[Jun 3 07:44:27] NOTICE[18237]: pbx_spool.c:402 attempt_thread: Call completed to Local/1000@conferences

The bridge gets left in an odd state. Rather than the bridge being destroyed, a “confbridge list” shows the conference is still active with 0 users. I have to restart asterisk to clear it.

I wonder if someone might take a look at my dialplan snippet below and see if I’m doing something wrong before I file a bug report. I’m using Asterisk 11.4.0.

[conferences] ; {{{
; this is where normal callers enter the conference
exten => 1000,1,ConfBridge(${EXTEN},testfone_bridge,testfone_user,testfone_user_menu)
exten => 1000,n,Hangup()

; this is where the conf leader enters
exten => 1000_admin,1,Answer()
exten => 1000_admin,n,Set(CALLERID(name)=ConfLeader)
exten => 1000_admin,n,Set(CALLERID(num)00001000)
exten => 1000_admin,n,Set(CONFBRIDGE(user,admin)=yes)
exten => 1000_admin,n,Set(CONFBRIDGE(user,marked)=yes)
exten => 1000_admin,n,Set(CONFBRIDGE(bridge,record_conference)=yes)
exten => 1000_admin,n,ConfBridge(1000,testfone_bridge,testfone_user,testfone_user_menu)
exten => 1000_admin,n,Hangup()

; this is the Local channel that connects to app_ices
exten => 1000_ices,1,Answer()
exten => 1000_ices,n,Ices(/home/asterisk/asterisk-ices-1000.xml)
;exten => 1000_ices,n,Hangup()
;}}}

3 thoughts on - Confbridge Doesn’t Kick Chan_local

  • That is odd. ConfBridge doesn’t really care about the channel technology; if a Local channel joins with the same user profile as a SIP
    channel, it should treat those channels in the same fashion.

    Ices may be throwing it off here however. I’d try two different tests:

    (1) Verify that with all ‘normal’ channel drivers, such as chan_sip, that the Conference tears down correctly.

    (2) Verify that a Local channel in an infinite wait gets ejected properly and the conference tears down.

    You can do that by:

    exten => 1000_wait,1,Answer()
    exten => 1000_wait,2,Wait(10000)
    exten => 1000_wait,3,Hangup()

    (Or something equally sinister)

    If both (1) and (2) are successful, than there’s some impact that the Ices application is having on the Local channel that is messing up the reference counting inside the ConfBridge. Otherwise, it’s an error in ConfBridge.

    Matt

  • OK, looks like this is the problem. Taking chan_local out of the picture, I tested it with an incoming SIP call and an incoming IAX
    call and sure enough, the tear down fails. So if I rely on end_marked=yes to kick all my conference participants when the leader exits, it fails like this:

    < < Hangup on console >>
    Playing ‘confbridge-leave.slin’ (language ‘en’)
    — Stopped music on hold on SIP/gent_2880-00000002
    Playing ‘custom/thank-you.ulaw’ (language ‘en’)
    — Executing [1000@conferences:2] Hangup(“SIP/gent_2880-00000002”,
    “”) in new stack
    == Spawn extension (conferences, 1000, 2) exited non-zero on
    ‘SIP/gent_2880-00000002’

    confbridge list shows this:

    Conference Bridge Name Users Marked Locked?
    ================================ ====== ====== =======1000 0 0 unlocked

    Now my confbridge is in a bad state.

    I tested it on both 11.4.0 and 11.3.0 on two different boxes with the same results.

    So what do you think? Should I file a bug?