[asterisk-commits] kpfleming: trunk r205770 - /trunk/apps/app_fax.c
SVN commits to the Asterisk project
asterisk-commits at lists.digium.com
Fri Jul 10 10:28:15 CDT 2009
Author: kpfleming
Date: Fri Jul 10 10:28:11 2009
New Revision: 205770
URL: http://svn.asterisk.org/svn-view/asterisk?view=rev&rev=205770
Log:
Fix some remaining T.38 negotiation problems in app_fax.
Revision 205696 did not quite fix all the issues with the T.38 negotiation
changes and app_fax; this patch corrects them, along with a couple of other
minor issues.
(closes issue #15480)
Reported by: dimas
Patches:
test2-15480.patch uploaded by dimas (license 88)
Modified:
trunk/apps/app_fax.c
Modified: trunk/apps/app_fax.c
URL: http://svn.asterisk.org/svn-view/asterisk/trunk/apps/app_fax.c?view=diff&rev=205770&r1=205769&r2=205770
==============================================================================
--- trunk/apps/app_fax.c (original)
+++ trunk/apps/app_fax.c Fri Jul 10 10:28:11 2009
@@ -497,6 +497,7 @@
res = 1;
break;
} else if (parameters->request_response == AST_T38_REQUEST_NEGOTIATE) {
+ ast_debug(1, "T38 request received, accepting\n");
if (parameters->version > 0) {
/* Only T.38 Version 0 is supported at this time */
parameters->version = 0;
@@ -508,12 +509,10 @@
}
/* we only support bit rates up to 9.6kbps */
parameters->rate = AST_T38_RATE_9600;
+ /* Complete T38 switchover */
ast_indicate_data(s->chan, AST_CONTROL_T38_PARAMETERS, parameters, sizeof(*parameters));
- /* T38 switchover completed */
- s->t38parameters = *parameters;
- ast_debug(1, "T38 negotiated, finishing audio loop\n");
- res = 1;
- break;
+ /* Do not break audio loop, wait until channel driver finally acks switchover
+ with AST_T38_NEGOTIATED */
}
}
@@ -598,7 +597,8 @@
}
if (s->t38parameters.transcoding_mmr) {
t38_set_mmr_transcoding(t38state, TRUE);
- } else if (s->t38parameters.transcoding_jbig) {
+ }
+ if (s->t38parameters.transcoding_jbig) {
t38_set_jbig_transcoding(t38state, TRUE);
}
@@ -647,9 +647,8 @@
}
} else if (inf->frametype == AST_FRAME_CONTROL && inf->subclass == AST_CONTROL_T38_PARAMETERS) {
struct ast_control_t38_parameters *parameters = inf->data.ptr;
- if (parameters->request_response == AST_T38_TERMINATED || parameters->request_response == AST_T38_REFUSED) {
- ast_debug(1, "T38 down, terminating\n");
- res = -1;
+ if (parameters->request_response == AST_T38_TERMINATED) {
+ ast_debug(1, "T38 down, finishing\n");
break;
}
}
More information about the asterisk-commits
mailing list