Summary:ASTERISK-15209: [patch] New SDP handling code totally broke T.38 reinvites
Reporter:Alexander V. Chernikov (bird_of_luck)Labels:
Date Opened:2009-11-24 08:52:21.000-0600Date Closed:2010-01-28 14:28:11.000-0600
Versions:Frequency of
Environment:Attachments:( 0) parse_sdp_a_image.diff
( 1) t38-sdp-parsing-fix1.diff
( 2) t38-sdp-parsing-fix2.patch
( 3) t38-sdp-parsing-fix3.diff
Description:SDP handling code introduced in r227758 effectively sets t38jointcapability to 0 causing reinvite to fail with reason 'No compatible codecs, not accepting this offer!'


Attached patch seems to fix an issue with accepting INVITE, but there are some  other issues with r38 passthrough. Downgrading to 1.4.26 fixes issue completely
Comments:By: Kristijan Vrban (vrban) 2009-12-21 05:28:42.000-0600

hello, i just want to confirm this issue. I also have problems with t.38 passthrough since latestes asterisk 1.4 versions. with my old 1.4.20 t.38 passthrough is ok, and with latest 1.4.28, asterisk does not passthrough t.38 as expected. something is wrong, and i just started to find the changeset that at fault.

By: Kristijan Vrban (vrban) 2009-12-21 08:11:21.000-0600

yes, it is definite r227758 that broke t.38 passthrough in 1.4 the branch.
What is funny, the comment in the reviewboard*: "Not tested with T.38, but it should work well."

Well, t.38 is not working well...


By: Matthew Nicholson (mnicholson) 2009-12-21 11:49:07.000-0600

Please test with the patch I just uploaded.

By: Kristijan Vrban (vrban) 2009-12-21 14:58:12.000-0600

hello mnicholson,

with your patch, chan_sip send now all the t38 related sdp lines that where missing in the OK for the T.38 RE-INVITE, but still no UDPTL activity with 1.4.28 "udptl debug" just show nothing.

By: Matthew Nicholson (mnicholson) 2009-12-21 15:55:45.000-0600

Please upload a sip debug or a tcpdump of a faulty call.

By: Matthew Nicholson (mnicholson) 2009-12-21 15:59:57.000-0600

Actually both the sip debug and the tcpdump may be useful.  Please upload both if possible.

By: Kristijan Vrban (vrban) 2009-12-21 16:44:21.000-0600

hello mnicholson, please dont write a patch for this if you also found the error meanwhile. i allready found the bug in the source, and i want the write patch, to get my name into the next changelog. Because i collect all changelogs where i have been involved for my next application for employment :)

By: Matthew Nicholson (mnicholson) 2009-12-21 16:47:13.000-0600

I have already written a patch to fix this.  There may be parts of this issue that my patch does not fix though.  Feel free to upload any fixes you have developed.

By: Kristijan Vrban (vrban) 2009-12-21 17:31:57.000-0600

no, i dont know how to fix it on the quick, it's to late now

There is no udptl activity/forwarding, because all incoming udptl's get dropped in
udptl.c here:

/* Ignore if the other side hasn't been given an address yet. */
       if (!udptl->them.sin_addr.s_addr || !udptl->them.sin_port) {

By: Kristijan Vrban (vrban) 2009-12-21 19:20:45.000-0600

i could not stand still, there is the fix. The problem was, the Return after the "Have T.38 but no audio codecs, accepting offer anyway" debug message, before the t.38 port/ip was set. And since this check is completely needless (i think), i removed it. now T.38 pass-through is working for me again.

By: Mihail (mihaill) 2009-12-22 04:32:08.000-0600

hello, have a nice day.
Today I try to install Asterisk 1.4.27 on Gentoo
as02# uname -a
Linux as02 2.6.27-gentoo-r8 #1 SMP Fri Mar 27 17:22:51 MSK 2009 i686 Intel(R) Core(TM)2 Quad CPU Q9400 @ 2.66GHz GenuineIntel GNU/Linux
so t38-sdp-parsing-fix1.diff renamed to patch_aster_t38_1.diff and try to apply, I had a massenge "Failed Patch: patch_aster_t38_1.diff !" when I lookind log of installation I see
PATCH COMMAND:   patch -p0 -g0 -E --no-backup-if-mismatch < /usr/portage/local/layman/voip/net-misc/asterisk/files/1.4/patch_aster_t38_1.diff

patching file channels/chan_sip.c
Hunk #1 FAILED at 5614.
Hunk #2 FAILED at 5904.
Hunk #3 FAILED at 5918.
Hunk #4 FAILED at 5941.
Hunk ASTERISK-1 FAILED at 5956.
Hunk ASTERISK-2 FAILED at 5968.
Hunk ASTERISK-3 FAILED at 5980.
7 out of 7 hunks FAILED -- saving rejects to file channels/chan_sip.c.rej

PATCH COMMAND:   patch -p1 -g0 -E --no-backup-if-mismatch < /usr/portage/local/layman/voip/net-misc/asterisk/files/1.4/patch_aster_t38_1.diff

can't find file to patch at input line 3
Perhaps you used the wrong -p or --strip option?
The text leading up to this was:
|--- channels/chan_sip.c        (revision 233035)
|+++ channels/chan_sip.c        (working copy)
No file to patch.  Skipping patch.
7 out of 7 hunks ignored
so patch don`t apply, I open dirrectory with sourse and look diff manual - I see that patch already apply, it`s normally?
without a patch asterisk build on, so i will test wor t38

By: Matthew Nicholson (mnicholson) 2009-12-22 09:49:46.000-0600

The patch must be applied to the latest version of asterisk 1.4.

By: Matthew Nicholson (mnicholson) 2009-12-22 12:27:16.000-0600


I have merged a modified version of your patch with my patch.  Please test.

By: Kristijan Vrban (vrban) 2009-12-22 15:00:07.000-0600

Not tested yet, but since the merged version of both patches are functionally the same, it should work well. ...wait, do i have a deja vu, no no ;-)

By: Mihail (mihaill) 2009-12-23 04:21:52.000-0600

hello! have a nice day.
installed today 1.4.28 and applyed patch.
begin test it, at the current moment it work
my scheme: fax <-> NSG800 <-> * <-> cisco_5350 <PRI>
i can send to mail log of asterisk and dump from tcpdump

By: Kristijan Vrban (vrban) 2009-12-23 09:08:05.000-0600

ok, t38-sdp-parsing-fix3.diff is tested. works as expected.

By: Digium Subversion (svnbot) 2009-12-23 09:21:30.000-0600

Repository: asterisk
Revision: 236261

U   branches/1.4/channels/chan_sip.c

r236261 | mnicholson | 2009-12-23 09:21:29 -0600 (Wed, 23 Dec 2009) | 8 lines

Properly set T.38 attributes and don't return before T.38 ports are configured when T.38 is found but no audio stream is found.

(closes issue ASTERISK-15209)
Reported by: bird_of_Luck
     t38-sdp-parsing-fix3.diff uploaded by mnicholson (license 96)
Tested by: vrban, mihaill



By: Digium Subversion (svnbot) 2009-12-23 09:46:27.000-0600

Repository: asterisk
Revision: 236261

U   branches/1.4/channels/chan_sip.c

r236261 | mnicholson | 2009-12-23 09:21:28 -0600 (Wed, 23 Dec 2009) | 8 lines

Properly set T.38 attributes and don't return before T.38 ports are configured when T.38 is found but no audio stream is found.

(closes issue ASTERISK-15209)
Reported by: bird_of_Luck
     t38-sdp-parsing-fix3.diff uploaded by mnicholson (license 96), written by vrban and mnicholson
Tested by: vrban, mihaill