[asterisk-bugs] [Asterisk 0011017]: [patch] zap restart fails to generate channels

Asterisk Bug Tracker noreply at bugs.digium.com
Thu Aug 21 11:45:05 CDT 2008


A NOTE has been added to this issue. 
====================================================================== 
http://bugs.digium.com/view.php?id=11017 
====================================================================== 
Reported By:                tzafrir
Assigned To:                jpeeler
====================================================================== 
Project:                    Asterisk
Issue ID:                   11017
Category:                   Channels/chan_zap
Reproducibility:            always
Severity:                   minor
Priority:                   normal
Status:                     closed
Asterisk Version:            SVN 
SVN Branch (only for SVN checkouts, not tarball releases):  trunk 
SVN Revision (number only!): 86182 
Disclaimer on File?:        N/A 
Request Review:              
Resolution:                 fixed
Fixed in Version:           
====================================================================== 
Date Submitted:             2007-10-17 15:50 CDT
Last Modified:              2008-08-21 11:45 CDT
====================================================================== 
Summary:                    [patch] zap restart fails to generate channels
Description: 
The command "zap restart" has been added before 1.4 . However at some point
it has been changed to run setup_zap(2) instead of setup_zap(0) . This
makes it useless, as it can only destroy channels and not create new ones.

The attached patch fixes this, as well as other implementation issues with
zap_restart:

* Just release all the interfaces at once. The same code as in the module
unload.

* Thus we also lock the iflist when destroying channel.

* If we were listening on some file descriptors and now we don't, pfds was
still pointing to a value even though its value has been released.


With this patch a restart of analog channels work. A restart of digital
spans still fails, as there is no where in the code that D channels are
being released.
======================================================================
Relationships       ID      Summary
----------------------------------------------------------------------
duplicate of        0010816 errors on 'zap rsetart'
has duplicate       0012121 Zap restart fails
====================================================================== 

---------------------------------------------------------------------- 
 (0091630) tzafrir (manager) - 2008-08-21 11:45
 http://bugs.digium.com/view.php?id=11017#c91630 
---------------------------------------------------------------------- 
Apologies for not testing it well enough before.

I have just noticed the following issue: there is a potentially endless
loop when running 'dahdi restart':

while (tmp->subs[SUB_REAL].dfd < 0 && reloading == 2) { /* the kernel may
not call dahdi_release fast enough for the open flagbit to be cleared in
time */
       usleep(1);
       tmp->subs[SUB_REAL].dfd = dahdi_open(fn);
}

What happens if the channel is kept busy by something else?
* Another Asterisk instance?
* A bug that causes a channel not to get closed?
* any other program?

To reproduce:

asterisk -rx 'dahdi destroy channel 1'
cat </dev/dahdi/1 >/dev/null &
asterisk -rx 'dahdi restart' 

Issue History 
Date Modified    Username       Field                    Change               
====================================================================== 
2008-08-21 11:45 tzafrir        Note Added: 0091630                          
======================================================================




More information about the asterisk-bugs mailing list