]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
create a UDPTL structure in create_addr_from_peer() if it does not already exist...
authorDwayne M. Hubbard <dwayne.hubbard@gmail.com>
Tue, 17 Feb 2009 21:59:38 +0000 (21:59 +0000)
committerDwayne M. Hubbard <dwayne.hubbard@gmail.com>
Tue, 17 Feb 2009 21:59:38 +0000 (21:59 +0000)
This is required to create a UDPTL structure in create_addr_from_peer() to handle the
scenario where 't38pt_udptl=yes' is not defined in the [general] section of sip.conf but
is defined the peer's context.  I tested this patch by enabling t38pt_udptl in the
[general] section on one system and only enabling t38pt_udptl in a peer's context on
the system sending a fax.  Without the patch, the sending system will fail to initiate
T38 negotiation with the warning message, "No way to add SDP without an UDPTL structure".
When this patch is applied the sending side will successfully initiate T38 negotiation.

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@176705 65c4cc65-6c06-0410-ace0-fbb531ad65f3

channels/chan_sip.c

index da32f627a784f03a0f79a4eddd3cd2d0bdef6bb7..d01a3c26b148b7b6633d88ded3229d655f938b6d 100644 (file)
@@ -4709,6 +4709,10 @@ static int create_addr_from_peer(struct sip_pvt *dialog, struct sip_peer *peer)
        }
        dialog->prefs = peer->prefs;
        if (ast_test_flag(&dialog->flags[1], SIP_PAGE2_T38SUPPORT)) {
+               if (!dialog->udptl) {
+                       /* t38pt_udptl was enabled in the peer and not in [general] */
+                       dialog->udptl = ast_udptl_new_with_bindaddr(sched, io, 0, bindaddr.sin_addr);
+               }
                ast_copy_flags(&dialog->t38.t38support, &peer->flags[1], SIP_PAGE2_T38SUPPORT);
                set_t38_capabilities(dialog);
                dialog->t38.jointcapability = dialog->t38.capability;