[asterisk-bugs] [Asterisk 0011583]: [patch] Allow disconnect feature before a call is bridged

Asterisk Bug Tracker noreply at bugs.digium.com
Mon Feb 2 11:40:37 CST 2009


A NOTE has been added to this issue. 
====================================================================== 
http://bugs.digium.com/view.php?id=11583 
====================================================================== 
Reported By:                sobomax
Assigned To:                murf
====================================================================== 
Project:                    Asterisk
Issue ID:                   11583
Category:                   Resources/NewFeature
Reproducibility:            always
Severity:                   feature
Priority:                   normal
Status:                     closed
Target Version:             1.6.2
Asterisk Version:           1.6.1-beta1 
Regression:                 No 
SVN Branch (only for SVN checkouts, not tarball releases): N/A 
SVN Revision (number only!):  
Request Review:              
Resolution:                 fixed
Fixed in Version:           
====================================================================== 
Date Submitted:             2007-12-17 14:29 CST
Last Modified:              2009-02-02 11:40 CST
====================================================================== 
Summary:                    [patch] Allow disconnect feature before a call is
bridged
Description: 
Asterisk has module called res_features.so which purpose is to detect user
configurable keypress sequences and fire up an appropriate actions. One of
the actions is a disconnect action that allows to terminate the call leg.
However the res_features main procedure is called within ast_bridge_call()
only and the ast_bridge_call() is executed only when call has been
successfully established.

The result of this issue is that for example if we re-define disconnect
action to be ## instead of default **, it doesn't work when the call has
not been asnwered yet.

But there is a situation when call has been initiated but has not answered
yet. This case is not served by the res_features and the call can be
interrupted with '*'-keypress and this default cannot be changed.

So the goal of the patch was to use the user configured feature code
during the call setup phase. The original ast_feature_interpret() function
does not well suit this purpose as it uses much call bridge specific data
and doesn't separate a detection of feature from a feature handler call. So
a new function ast_feature_detect() has been extracted off the
ast_feature_interpret() function but keeping the original logic intact
except some insignificant changes to locking.

Having created the ast_feature_detect() function the possibility to use
feature detection in almost any place of the asterisk code has been
appeared. So a call to this function has been added to wait_for_answer()
function of app_dial.so module. This code doesn't call the feature handler
however and uses old call leg disconnect logic to make the changes as small
and simple as possible to prevent unexpected problems. A disconnect feature
currently is the only one supported during call setup as other features as
call parking and call transfer doesn't make much sense during call setup.
However if need in some of the features would arise it is much easier to
implement as the infrastructure changes are already in place with this
patch.

======================================================================
Relationships       ID      Summary
----------------------------------------------------------------------
related to          0013315 Dial h option not operating as defined ...
====================================================================== 

---------------------------------------------------------------------- 
 (0099227) svnbot (reporter) - 2009-02-02 11:40
 http://bugs.digium.com/view.php?id=11583#c99227 
---------------------------------------------------------------------- 
Repository: asterisk
Revision: 172893

_U  branches/1.6.1/

------------------------------------------------------------------------
r172893 | murf | 2009-02-02 11:40:37 -0600 (Mon, 02 Feb 2009) | 45 lines

Blocked revisions 172890 via svnmerge

........
  r172890 | murf | 2009-02-02 10:37:15 -0700 (Mon, 02 Feb 2009) | 41 lines
  
  This change allows the disconnect feature (as in "one-touch" in
features.c)
  to be used within the dial app, before a call is bridged.
  
  Many thanks to sobomax for submitting this patch. 
  
  Quoting from bug 11582:
  
    "So the goal of the patch was to use the user configured feature code
during the 
     call setup phase. The original ast_feature_interpret() function is
not well suited 
     for this purpose as it uses much call bridge specific data and
doesn't separate a 
     detection of feature from a feature handler call. So a new function
ast_feature_detect() 
     has been extracted off the ast_feature_interpret() function but
keeping the original 
     logic intact except some insignificant changes to locking.
  
    "Having created the ast_feature_detect() function the possibility to
use feature detection 
     in almost any place of the asterisk code. So a call to this function
has been added to 
     wait_for_answer() function of app_dial.so module. This code doesn't
call the feature handler 
     however and uses old call leg disconnect logic to make the changes as
small and simple as 
     possible to prevent unexpected problems. A disconnect feature
currently is the only one 
     supported during call setup as other features as call parking and
call transfer don't make much 
     sense during call setup. However if need in some of the features
would arise it is much easier to 
     implement as the infrastructure changes are already in place with
this patch."
  
  I have cleaned up the patch somewhat, and verified that the existing
functionality is not
  harmed, and that the new functionality works. Terry has committed his
stuff, and there were
  no conflicts (see 14274).
  
  (closes issue http://bugs.digium.com/view.php?id=11583)
  Reported by: sobomax
  Patches:
        patch-apps__app_dial.c uploaded by sobomax (license 359)
        patch-include__asterisk__features.h uploaded by sobomax (license
359)
        patch-res__res_features.c uploaded by sobomax (license 359)
        enable-features-during-call-setup.diff uploaded by sobomax
(license 359)
        11583.newdiff uploaded by murf (license 17)
        enable-features-during-call-setup-1.diff uploaded by sobomax
(license 359)
        11583.latest-patch uploaded by murf (license 17)
  Tested by: sobomax, murf
........

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

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

Issue History 
Date Modified    Username       Field                    Change               
====================================================================== 
2009-02-02 11:40 svnbot         Checkin                                      
2009-02-02 11:40 svnbot         Note Added: 0099227                          
======================================================================




More information about the asterisk-bugs mailing list