From affe507d5b0792f3ee1d5d599e9d5420619604a0 Mon Sep 17 00:00:00 2001 From: Kevin Harwell Date: Thu, 16 Jan 2014 17:27:05 +0000 Subject: [PATCH] res_fax: check_modem_rate() returned incorrect rate for V.27 According to the new standard for V.27 and V.32 they are able to transmit at a bit rate of 4,800 or 9,600. The check_mode_rate function needed to be updated to reflect this. Also, because of this change the default 'minrate' value was updated to be 4800. (closes issue ASTERISK-22790) Reported by: Paolo Compagnini Patches: res_fax.txt uploaded by looserouting (license 6548) git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@405656 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- configs/res_fax.conf.sample | 4 ++-- res/res_fax.c | 10 +++++++--- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/configs/res_fax.conf.sample b/configs/res_fax.conf.sample index 19933e39d1..47ea35e044 100644 --- a/configs/res_fax.conf.sample +++ b/configs/res_fax.conf.sample @@ -8,8 +8,8 @@ maxrate=14400 ; Minimum Transmission Rate ; Possible values are { 2400 | 4800 | 7200 | 9600 | 12000 | 14400 } -; Set this value to the minimum desired transfer rate. Default: 2400 -minrate=2400 +; Set this value to the minimum desired transfer rate. Default: 4800 +minrate=4800 ; Send Progress/Status events to manager session ; Manager events with 'call' class permissions will receive events indicating the diff --git a/res/res_fax.c b/res/res_fax.c index f64e037f1c..ef69274d32 100644 --- a/res/res_fax.c +++ b/res/res_fax.c @@ -244,7 +244,7 @@ struct fax_module { }; static AST_RWLIST_HEAD_STATIC(faxmodules, fax_module); -#define RES_FAX_MINRATE 2400 +#define RES_FAX_MINRATE 4800 #define RES_FAX_MAXRATE 14400 #define RES_FAX_STATUSEVENTS 0 #define RES_FAX_MODEM (AST_FAX_MODEM_V17 | AST_FAX_MODEM_V27 | AST_FAX_MODEM_V29) @@ -573,7 +573,7 @@ static int check_modem_rate(enum ast_fax_modems modems, unsigned int rate) { switch (rate) { case 2400: - if (!(modems & (AST_FAX_MODEM_V27 | AST_FAX_MODEM_V34))) { + if (!(modems & (AST_FAX_MODEM_V34))) { return 1; } break; @@ -583,11 +583,15 @@ static int check_modem_rate(enum ast_fax_modems modems, unsigned int rate) } break; case 7200: - case 9600: if (!(modems & (AST_FAX_MODEM_V17 | AST_FAX_MODEM_V29 | AST_FAX_MODEM_V34))) { return 1; } break; + case 9600: + if (!(modems & (AST_FAX_MODEM_V17 | AST_FAX_MODEM_V27 | AST_FAX_MODEM_V29 | AST_FAX_MODEM_V34))) { + return 1; + } + break; case 12000: case 14400: if (!(modems & (AST_FAX_MODEM_V17 | AST_FAX_MODEM_V34))) {