Merged revisions 338950 via svnmerge from

https://origsvn.digium.com/svn/asterisk/branches/10

........
  r338950 | irroot | 2011-10-03 11:37:59 +0200 (Mon, 03 Oct 2011) | 14 lines
  
  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.
........


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@338951 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
Gregory Nietsky
2011-10-03 09:49:38 +00:00
parent b5147c8817
commit ebf3632e08

View File

@@ -1650,7 +1650,7 @@ static int receivefax_exec(struct ast_channel *chan, const char *data)
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 @@ static int sendfax_exec(struct ast_channel *chan, const char *data)
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");
@@ -2843,8 +2843,6 @@ static struct ast_frame *fax_gateway_framehook(struct ast_channel *chan, struct
}
}
details->caps &= ~AST_FAX_TECH_GATEWAY;
ao2_ref(details, -1);
return NULL;
}
@@ -3673,7 +3671,7 @@ static int load_module(void)
}
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;