[asterisk-bugs] [Asterisk 0010274]: T.38 passthrough with 2 Asterisk boxes not working
noreply at bugs.digium.com
noreply at bugs.digium.com
Fri Jul 27 01:49:37 CDT 2007
A NOTE has been added to this issue.
======================================================================
http://bugs.digium.com/view.php?id=10274
======================================================================
Reported By: cstadlmann
Assigned To:
======================================================================
Project: Asterisk
Issue ID: 10274
Category: Channels/chan_sip/T.38
Reproducibility: always
Severity: block
Priority: normal
Status: new
Asterisk Version: SVN
SVN Branch (only for SVN checkouts, not tarball releases): 1.4
SVN Revision (number only!): 76410
Disclaimer on File?: N/A
Request Review:
======================================================================
Date Submitted: 07-23-2007 08:41 CDT
Last Modified: 07-27-2007 01:49 CDT
======================================================================
Summary: T.38 passthrough with 2 Asterisk boxes not working
Description:
This is the configuration I'm using:
ATA 1 <-> Asterisk 1 <-> Asterisk 2 <-> ATA 2
As long ATA's are resided on the same Asterisk box, no T.38 problem. But
if ATA 1 is trying to send a fax via T.38 to ATA 2, the complete call fails
because Asterisk 1 is killing it during re-invite and Asterisk 2 gives up.
Both Asterisk boxes are: SVN-branch-1.4-r76410
======================================================================
----------------------------------------------------------------------
cstadlmann - 07-27-07 01:49
----------------------------------------------------------------------
Additional info:
If you look at the log file 'Log Asterisk 1.txt' at line 3390 ongoing, you
will see the following:
The ATA 1 sends a '100 Trying' to Asterisk 1. Asterisk 1 parses the SIP
message and then something strange happens: In line 3424 chan_sip.c it
calls the function 'check_pendings', which sends a completely senseless
re-invite to the ATA with NO T.38 information.
So I took a look at chan_sip.c (Line 11768 ongoing):
switch (resp) {
case 100: /* Trying */
case 101: /* Dialog establishment */
if (!ast_test_flag(req, SIP_PKT_IGNORE))
sip_cancel_destroy(p);
check_pendings(p);
break;
In case of '100 Trying' nothing should happen in my opinion. But because
there is no 'break;' stetement, code for '101' is executed.
So just to find out what happens, I changed line 11769 to the following:
case 100: /* Trying */ -> case 100: break; /*Trying */
Now T.38 negotiation between ATA 1 and ATA 2 through both Asterisk boxes
is fine because Asterisk 1 waits for '200 OK' from the ATA 1 without
executing any code. After '200 OK' from ATA 1 UDPTL packets start to run
from ATA 2 to ATA 1, but now Asterisk 1 kills the call at line 11864 in
chan_sip.c.
So I guess that the problem is not T.38 related. Something strange happens
when Asterisk receives a '100 Trying' SIP message during T.38 negotation.
Please could someone who knows what chan_sip.c is doing have a look at
it.
Again my setup:
ATA 1, ATA 2: Grandstream HT-502 1.0.0.44
Asterisk 1, Asterisk 2: SVN-branch-1.4-r77460M
Issue History
Date Modified Username Field Change
======================================================================
07-27-07 01:49 cstadlmann Note Added: 0067965
======================================================================
More information about the asterisk-bugs
mailing list