[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