[asterisk-bugs] [Asterisk 0017970]: [patch] res_agi.c:handle_getvariablefull() failes to unlock channel if given channel name of the channel that AGI is running on

Asterisk Bug Tracker noreply at bugs.digium.com
Thu Sep 30 12:08:21 CDT 2010


The following issue has been ASSIGNED. 
====================================================================== 
https://issues.asterisk.org/view.php?id=17970 
====================================================================== 
Reported By:                mdu113
Assigned To:                bbryant
====================================================================== 
Project:                    Asterisk
Issue ID:                   17970
Category:                   Resources/res_agi
Reproducibility:            always
Severity:                   major
Priority:                   normal
Status:                     assigned
Target Version:             1.4.38
Asterisk Version:           SVN 
JIRA:                       SWP-2189 
Regression:                 No 
Reviewboard Link:            
SVN Branch (only for SVN checkouts, not tarball releases):  1.4  
SVN Revision (number only!): 285365 
Request Review:              
====================================================================== 
Date Submitted:             2010-09-08 12:26 CDT
Last Modified:              2010-09-30 12:08 CDT
====================================================================== 
Summary:                    [patch] res_agi.c:handle_getvariablefull() failes to
unlock channel if given channel name of the channel that AGI is running on
Description: 
AGI command GET FULL VARIABLE supports operating on a channel given as a
channel name and it is perfectly OK to supply channel name of the channel
it's running on, i.e. perl example would be:


my $channel=$agi->get_variable("CHANNEL");
my $res=$agi->get_full_variable("somevar",$channel)

In this case handle_getvariablefull() fails to unlock channel resulting in
deadlocked asterisk. It fails to unlock it because condition at line 1254
of res_agi.c in this case evaluates to false (chan2 is actually == chan)
I've attached a simple patch to fix it
====================================================================== 

---------------------------------------------------------------------- 
 (0127544) svnbot (reporter) - 2010-09-30 12:08
 https://issues.asterisk.org/view.php?id=17970#c127544 
---------------------------------------------------------------------- 
Repository: asterisk
Revision: 289500

U   branches/1.4/res/res_agi.c

------------------------------------------------------------------------
r289500 | bbryant | 2010-09-30 12:08:20 -0500 (Thu, 30 Sep 2010) | 11
lines

res_agi.c:handle_getvariablefull() could recursively lock a channel and
not
release it if an argument is the current channel's name.

(closes issue https://issues.asterisk.org/view.php?id=17970)
Reported by: mdu113
Patches: 
      res_agi.c.diff3 uploaded by mdu113 (license 582)
      Tested by: mdu113

      Review: https://reviewboard.asterisk.org/r/947/

------------------------------------------------------------------------

http://svn.digium.com/view/asterisk?view=rev&revision=289500 

Issue History 
Date Modified    Username       Field                    Change               
====================================================================== 
2010-09-30 12:08 svnbot         Note Added: 0127544                          
2010-09-30 12:08 svnbot         Status                   ready for testing =>
assigned
======================================================================




More information about the asterisk-bugs mailing list