[asterisk-commits] irroot: branch irroot/distrotech-customers-1.8 r338990 - /team/irroot/distrot...

SVN commits to the Asterisk project asterisk-commits at lists.digium.com
Mon Oct 3 06:36:57 CDT 2011


Author: irroot
Date: Mon Oct  3 06:36:42 2011
New Revision: 338990

URL: http://svnview.digium.com/svn/asterisk?view=rev&rev=338990
Log:
  Fixup a race condition in res_fax.c where FAXOPT(gateway)=no will
  turn off the gateway but the framehook is not destroyed.
  
  this problem happens when a gateway is attempted in the dialplan and
  the device is not available i may want to do fax to mail in the server
  it will not be allowed.
  
  instead of checking only AST_FAX_TECH_GATEWAY also check gateway_id


Modified:
    team/irroot/distrotech-customers-1.8/res/res_fax.c

Modified: team/irroot/distrotech-customers-1.8/res/res_fax.c
URL: http://svnview.digium.com/svn/asterisk/team/irroot/distrotech-customers-1.8/res/res_fax.c?view=diff&rev=338990&r1=338989&r2=338990
==============================================================================
--- team/irroot/distrotech-customers-1.8/res/res_fax.c (original)
+++ team/irroot/distrotech-customers-1.8/res/res_fax.c Mon Oct  3 06:36:42 2011
@@ -1721,7 +1721,7 @@
 	ast_string_field_set(details, error, "INIT_ERROR");
 	set_channel_variables(chan, details);
 
-	if (details->caps & AST_FAX_TECH_GATEWAY) {
+	if ((details->caps & AST_FAX_TECH_GATEWAY) && (details->gateway_id > 0)) {
 		ast_string_field_set(details, resultstr, "can't receive a fax on a channel with a T.38 gateway");
 		set_channel_variables(chan, details);
 		ast_log(LOG_ERROR, "executing ReceiveFAX on a channel with a T.38 Gateway is not supported\n");
@@ -2201,7 +2201,7 @@
 	ast_string_field_set(details, error, "INIT_ERROR");
 	set_channel_variables(chan, details);
 
-	if (details->caps & AST_FAX_TECH_GATEWAY) {
+	if ((details->caps & AST_FAX_TECH_GATEWAY) && (details->gateway_id > 0)) {
 		ast_string_field_set(details, resultstr, "can't send a fax on a channel with a T.38 gateway");
 		set_channel_variables(chan, details);
 		ast_log(LOG_ERROR, "executing SendFAX on a channel with a T.38 Gateway is not supported\n");
@@ -2929,8 +2929,6 @@
 				ast_channel_make_compatible(chan, peer);
 			}
 		}
-
-		details->caps &= ~AST_FAX_TECH_GATEWAY;
 
 		ao2_ref(details, -1);
 		return NULL;
@@ -3904,7 +3902,6 @@
 		} else if (ast_false(val)) {
 			ast_framehook_detach(chan, details->gateway_id);
 			details->gateway_id = -1;
-			details->caps &= ~AST_FAX_TECH_GATEWAY;
 		} else {
 			ast_log(LOG_WARNING, "Unsupported value '%s' passed to FAXOPT(%s).\n", value, data);
 		}




More information about the asterisk-commits mailing list