[svn-commits] irroot: branch 10 r338950 - /branches/10/res/res_fax.c

SVN commits to the Digium repositories svn-commits at lists.digium.com
Mon Oct 3 04:38:02 CDT 2011


Author: irroot
Date: Mon Oct  3 04:37:59 2011
New Revision: 338950

URL: http://svnview.digium.com/svn/asterisk?view=rev&rev=338950
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

Reverts 338904

Fix some white space.


Modified:
    branches/10/res/res_fax.c

Modified: branches/10/res/res_fax.c
URL: http://svnview.digium.com/svn/asterisk/branches/10/res/res_fax.c?view=diff&rev=338950&r1=338949&r2=338950
==============================================================================
--- branches/10/res/res_fax.c (original)
+++ branches/10/res/res_fax.c Mon Oct  3 04:37:59 2011
@@ -1650,7 +1650,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");
@@ -2120,7 +2120,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");
@@ -2842,8 +2842,6 @@
 				ast_channel_make_compatible(chan, peer);
 			}
 		}
-
-		details->caps &= ~AST_FAX_TECH_GATEWAY;
 
 		ao2_ref(details, -1);
 		return NULL;
@@ -3673,7 +3671,7 @@
 	}
 
 	ast_cli_register_multiple(fax_cli, ARRAY_LEN(fax_cli));
-	res = ast_custom_function_register(&acf_faxopt);	
+	res = ast_custom_function_register(&acf_faxopt);
 	fax_logger_level = ast_logger_register_level("FAX");
 
 	return res;




More information about the svn-commits mailing list