[asterisk-users] Little t38 bug?
Miguel Amez
villalvilla at gmail.com
Tue May 25 07:47:41 CDT 2010
Hi Kevin,
Thanks for your quick reply.
I have been trying to find a good configuration for T38modem + hylafax +
asterisk for almost 1 month, and the issue is allways the same: just syncs
at 2400 bpps.
Help on this issue would be apreciated.
Regards,
Miguel Amez
2010/5/25 Kevin P. Fleming <kpfleming at digium.com>
> On 05/25/2010 05:48 AM, Alexandru Oniciuc wrote:
> > Hello List,
> >
> >
> >
> > I think I’ve discovered a little bug in t.38 bug in
> > 1.6.0.22 regarding the speed (T38MaxBitRate) used to send the faxes.
> >
> >
> >
> > Asterisk always responds with a=T38MaxBitRate:2400.
> > I’ve tried with Patton and Grandstream devices and the result is always
> > the same.
> >
> > Patton ignores the parameter and sends the fax at 9600.
> >
> > Grandstream doesn’t, and all the faxes are going in and
> > out at 2400.
> >
> >
> >
> > Looking at the code I found this in chan_sip.c (line
> 7736):
> >
> >
> >
> > if ((sscanf(a, "T38FaxMaxBuffer:%30u", &x) == 1)) {
> >
> > ast_debug(3, "MaxBufferSize:%d\n", x);
> >
> > found = TRUE;
> >
> > } else if ((sscanf(a, "T38MaxBitRate:%30u", &x) == 1) ||
> > (sscanf(a, "T38FaxMaxRate:%30u", &x) == 1)) {
> >
> > ast_debug(3, "T38MaxBitRate: %d\n", x);
> >
> > switch (x) {
> >
> > case 14400:
> >
> > p->t38.their_parms.rate = AST_T38_RATE_14400;
> >
> > break;
> >
> > case 12000:
> >
> > p->t38.their_parms.rate = AST_T38_RATE_12000;
> >
> > break;
> >
> > case 9600:
> >
> > p->t38.their_parms.rate = AST_T38_RATE_9600;
> >
> > break;
> >
> > case 7200:
> >
> > p->t38.their_parms.rate = AST_T38_RATE_7200;
> >
> > break;
> >
> > case 4800:
> >
> > p->t38.their_parms.rate = AST_T38_RATE_4800;
> >
> > break;
> >
> > case 2400:
> >
> > p->t38.their_parms.rate = AST_T38_RATE_2400;
> >
> > break;
> >
> > }
> >
> > found = TRUE;
> >
> > else if {…
> >
> >
> >
> >
> >
> >
> >
> > If I’m not misteaking the second “if else” condition will never be true
> > if the other device sends “T38FaxMaxBuffer” (wich they all usually do).
> >
> >
> >
> > Shouldn’t it be
> >
> >
> >
> > if((sscanf(a, "T38FaxMaxBuffer:%30u", &x) == 1) && ((sscanf(a,
> > "T38MaxBitRate:%30u", &x) == 0) || (sscanf(a, "T38FaxMaxRate:%30u", &x)
> > == 0))) ??
>
> No. You aren't understanding the code :-) It's comparing a string buffer
> against various patterns, and the string can't match all the patterns at
> the same time.
>
> This code is executed as each line of the SDP is processed, and each one
> will match one of the branches of this tree, and it's values will be
> extracted and stored for later use.
>
> In other words... this is not the cause of your problem.
>
> --
> Kevin P. Fleming
> Digium, Inc. | Director of Software Technologies
> 445 Jan Davis Drive NW - Huntsville, AL 35806 - USA
> skype: kpfleming | jabber: kfleming at digium.com
> Check us out at www.digium.com & www.asterisk.org
>
> --
> _____________________________________________________________________
> -- Bandwidth and Colocation Provided by http://www.api-digital.com --
> New to Asterisk? Join us for a live introductory webinar every Thurs:
> http://www.asterisk.org/hello
>
> asterisk-users mailing list
> To UNSUBSCRIBE or update options visit:
> http://lists.digium.com/mailman/listinfo/asterisk-users
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.digium.com/pipermail/asterisk-users/attachments/20100525/a9b7f694/attachment-0001.htm
More information about the asterisk-users
mailing list