Summary:ASTERISK-14954: [patch] Status of dahdi/zap channels incorrectly reported unavailable instead of idle
Reporter:Francesco Romano (francesco_r)Labels:
Date Opened:2009-10-07 05:57:29Date Closed:2010-10-21 15:43:21
Versions:Frequency of
Environment:Attachments:( 0) pbx.c.patch
Description:Using the latest asterisk 1.4 releases, the state of a zaptel/dahdi extension in idle is incorrecly reported with core show hints. For example this is the output of a zaptel installation:
271@ext-local           : ZAP/32                State:Unavailable     Watchers  0

Or this is with dahdi:
521@ext-local           : DAHDI/1               State:Unavailable     Watchers  1

Instead ringing and inuse is correcly reported:
521@ext-local           : DAHDI/1               State:Ringing         Watchers  1

With an old 1.2 asterisk the status is always correct:
251                 : ZAP/32                State:Idle            Watchers  0

Comments:By: Leif Madsen (lmadsen) 2009-10-07 08:04:55

What is the most recent release that this worked on? Also, can you provide your configuration options in order to reproduce this in the lab? Thanks!

By: Francesco Romano (francesco_r) 2009-10-07 08:44:40

I have several asterisk installations, it's difficult for me to know in which release appeared this bug. But i have checked three different server with 1.4.20, 1.4.21 and 1.4.24 and seems to work:
4075@ext-local           : ZAP/5                 State:Idle
599@ext-local           : DAHDI/32              State:Idle            Watchers  0

I use standard FreePBX setup, so the files are auto-generated. In the context ex-local i have:
exten => 4075,1,Macro(exten-vm,novm,4075)
exten => 4075,n,Hangup
exten => 4075,hint,ZAP/5

By: Francesco Romano (francesco_r) 2009-10-27 13:05:19

I found another problem related to hints with meetme. I have setup in extensions.conf "282,hint,MeetMe:282" to see the status of a conference with a blf but when is idle the conference show:
282@ext-meetme          : MeetMe:282            State:Unavailable

Recently another user discovered the same bug:

Is related to this issue? Or i must open a new bug?

By: Leif Madsen (lmadsen) 2009-10-27 13:28:47

Please open a separate issue, and request to have it marked as related.

By: roger_r (roger_r) 2009-11-15 10:41:07.000-0600

I found the same problem in
The DAHDI hint alwags Unavailable instead of idle when the channel is really idle.
I'm sorry for my poor Englist.
I mean that i found the some problem.

By: roger_r (roger_r) 2009-11-15 10:42:12.000-0600

MicroCC*CLI> core show hints
   -= Registered Asterisk Dial Plan Hints =-
                  8000@ext-local           : SIP/8000              State:Unavailable     Watchers  0
                  8001@ext-local           : DAHDI/1               State:Unavailable     Watchers  0
                  8002@ext-local           : DAHDI/2               State:Unavailable     Watchers  0
                  8003@ext-local           : DAHDI/3               State:Unavailable     Watchers  0
                  8004@ext-local           : DAHDI/4               State:Unavailable     Watchers  0
                  8005@ext-local           : DAHDI/5               State:Unavailable     Watchers  0
                  8006@ext-local           : DAHDI/6               State:Unavailable     Watchers  0
                  8007@ext-local           : DAHDI/7               State:Unavailable     Watchers  0
                  8008@ext-local           : DAHDI/8               State:Unavailable     Watchers  0
                  8009@ext-local           : SIP/8009              State:Unavailable     Watchers  0
                  8010@ext-local           : SIP/8010              State:Idle            Watchers  0
                  8011@ext-local           : SIP/8011              State:Unavailable     Watchers  0
                  8012@ext-local           : SIP/8012              State:Unavailable     Watchers  0
                  8013@ext-local           : SIP/8013              State:Unavailable     Watchers  0
                  8014@ext-local           : SIP/8014              State:Unavailable     Watchers  0
                  8015@ext-local           : SIP/8015              State:Unavailable     Watchers  0
                  8016@ext-local           : SIP/8016              State:Unavailable     Watchers  0
- 17 hints registered

By: viniciusfontes (viniciusfontes) 2010-01-22 10:57:08.000-0600

Me and a colleague of mine are working on a patch for that issue. Meanwhile, we did a horrible hack to work around this issue.

On main/pbx.c, change the line 1946 from




Note that this will make all unavaible extensions to appear as idle, probably even if they don't exist. As our customer had just a few SIP extensions, this hack worked fine for them.

By: viniciusfontes (viniciusfontes) 2010-01-25 05:44:54.000-0600

We wrote a better patch and posted it. Just waiting for the code licensing issues now.

By: Leif Madsen (lmadsen) 2010-01-25 08:47:19.000-0600

Where did the patch get posted?

By: viniciusfontes (viniciusfontes) 2010-01-25 09:59:35.000-0600

It was posted today but since I haven't signed an agreement yet, it will not be available here until Digium acknowledges the agreement. Never did that before, might take a few days.

By: Leif Madsen (lmadsen) 2010-01-25 10:26:10.000-0600

I meant which issue number was it posted on? :)

By: viniciusfontes (viniciusfontes) 2010-01-25 11:16:51.000-0600

This one.

By: Leif Madsen (lmadsen) 2010-01-25 11:21:01.000-0600

I don't see any patches attached to this issue.

By: viniciusfontes (viniciusfontes) 2010-01-25 11:23:38.000-0600

Send that again. Please note the patch was tested on 1.4.28.

By: Francesco Romano (francesco_r) 2010-02-11 14:03:34.000-0600

This patch works well for me in asterisk

By: viniciusfontes (viniciusfontes) 2010-02-11 19:03:45.000-0600

Good to know! I'm not sure this is right way to fix it, but at least it's an attempt.

By: Antonio Gallo (agx) 2010-04-23 04:32:29

I had the issue with 1.4.28-rc1 with both old-ZAP and mISDN.

I applied the patch and its gone:
315@interni             : Zap/1                 State:Idle            Watchers  0
314@interni             : mISDN/1&mISDN/2       State:Idle            Watchers  0

By: Leif Madsen (lmadsen) 2010-04-26 14:15:21

Zaptel has not been maintained for quite some time now. If you run the latest DAHDI do you still have the same issue?

By: Francesco Romano (francesco_r) 2010-04-26 16:32:02

I have upgraded to the latest 1.4 SVN yesterday and i still had the same issue, but applying this patch seems to solve the problem.

By: Leif Madsen (lmadsen) 2010-04-27 10:45:34

Thanks for the update!

By: Lawrence Bartash (lawbar) 2010-05-14 15:09:28

I can verify this behavior is still this way using the latest asterisk
and dahdi-linux-2.3.0. Dahdi channel hints are state unavailable when they should be idle. The patch works but it is a hack, so dahdi channels that are really unavailable (like on a pri or a channel bank that is down) show up as idle.

By: Matthew Nicholson (mnicholson) 2010-06-08 15:02:20

I took a look at this issue, and it looks like the proper fix for this would be to implement a devicestate function in chan_dahdi that returns the correct device state.  I want to get another opinion on this before I start work on this though.

By: Cyril VELTER (velter) 2010-06-28 06:55:01

I use to get this problem on the asterisk version I use now (1.2). I fix this by adding a devicestate callback to chan_zap. The following code works for 1.2 (It also compiles on 1.6, but I have not tested it).

<inline code removed by lmadsen>

By: Leif Madsen (lmadsen) 2010-07-06 10:48:07

velter: please attach any code you wish to submit by attaching it to the issue and not inline. Thanks!

By: Antonio Gallo (agx) 2010-07-07 01:40:25

tested the old attached patch "pbx.c.patch" with 1.4.31 too this last 2 month and i had zero problem with BLFs of all kinds (Zap, mISDN, SIP, IAX)

By: Digium Subversion (svnbot) 2010-07-16 13:30:21

Repository: asterisk
Revision: 277327

U   branches/1.4/main/pbx.c

r277327 | mnicholson | 2010-07-16 13:30:21 -0500 (Fri, 16 Jul 2010) | 8 lines

Interpret device state AST_DEVICE_UNKNOWN as extension state AST_EXTENSION_NOT_INUSE.

(closes issue ASTERISK-14954)
Reported by: francesco_r
     pbx.c.patch uploaded by viniciusfontes (license 978)
Tested by: francesco_r, agx, lawbar



By: Digium Subversion (svnbot) 2010-07-16 13:31:07

Repository: asterisk
Revision: 277331

_U  trunk/
U   trunk/main/pbx.c

r277331 | mnicholson | 2010-07-16 13:31:07 -0500 (Fri, 16 Jul 2010) | 15 lines

Merged revisions 277327 via svnmerge from

 r277327 | mnicholson | 2010-07-16 13:30:22 -0500 (Fri, 16 Jul 2010) | 8 lines
 Interpret device state AST_DEVICE_UNKNOWN as extension state AST_EXTENSION_NOT_INUSE.
 (closes issue ASTERISK-14954)
 Reported by: francesco_r
       pbx.c.patch uploaded by viniciusfontes (license 978)
 Tested by: francesco_r, agx, lawbar



By: Digium Subversion (svnbot) 2010-07-16 13:33:04

Repository: asterisk
Revision: 277338

_U  branches/1.6.2/
U   branches/1.6.2/main/pbx.c

r277338 | mnicholson | 2010-07-16 13:33:04 -0500 (Fri, 16 Jul 2010) | 22 lines

Merged revisions 277331 via svnmerge from

 r277331 | mnicholson | 2010-07-16 13:31:08 -0500 (Fri, 16 Jul 2010) | 15 lines
 Merged revisions 277327 via svnmerge from
   r277327 | mnicholson | 2010-07-16 13:30:22 -0500 (Fri, 16 Jul 2010) | 8 lines
   Interpret device state AST_DEVICE_UNKNOWN as extension state AST_EXTENSION_NOT_INUSE.
   (closes issue ASTERISK-14954)
   Reported by: francesco_r
         pbx.c.patch uploaded by viniciusfontes (license 978)
   Tested by: francesco_r, agx, lawbar