[asterisk-dev] More T38 questions/fixes

Dan Austin Dan_Austin at Phoenix.com
Wed Nov 22 12:57:16 MST 2006


A bug reporter no Mantis noticed that T38 would not work
for a peer unless support was enabled in both the general
and iser/peer section of the config.  While digging through
the way flags are set/checked/copied I noticed this in 
sip_alloc():

if (ast_test_flag(&p->flags[1], SIP_PAGE2_T38SUPPORT))
   p->udptl = ast_udptl_new_with_bindaddr(sched, io, 0,
bindaddr.sin_addr);

Support for RTP and TCP passthrough of T38 is not complete, but
won't the code above always setup T38 on UDPTL if any T38 passthrough
options are set?

The issue with t38pt_udptl being required in the general section
of the config is also clear in sip_alloc().  At that point in the
code we have no visibility into user/peer options, so we allocate
the p->udptl struct based on the global options.  We later base
all decisions on whether to use T38 on this allocation, not on
any user/peer configuration.

Should the fix be to move the allocation of p->udptl our of sip_alloc()?
Perhaps into process_sdp() if the caller requests T38 and support is
turned on for the user/peer?

Dan


More information about the asterisk-dev mailing list