]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
res_pjsip_multihomed: Fix a bug where outgoing messages for TCP would go out using...
authorJoshua Colp <jcolp@digium.com>
Wed, 12 Mar 2014 12:51:34 +0000 (12:51 +0000)
committerJoshua Colp <jcolp@digium.com>
Wed, 12 Mar 2014 12:51:34 +0000 (12:51 +0000)
This change fixes a bug where the code which changes the transport did not check whether
the message is going out over UDP or not before changing it. For TCP and TLS transports
we don't need to change the transport as the correct one is already chosen.
........

Merged revisions 410471 from http://svn.asterisk.org/svn/asterisk/branches/12

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

res/res_pjsip_multihomed.c

index c959fa7777c239750f103783e8a6623c0a71df4e..75ab6058cb0c98e5219fe4ac099657fa1b11723c 100644 (file)
@@ -102,9 +102,12 @@ static pj_status_t multihomed_on_tx_message(pjsip_tx_data *tdata)
        }
 
        /* If the transport it is going out on is different reflect it in the message */
-       transport = multihomed_get_udp_transport(&prm.ret_addr, prm.ret_port);
-       if (transport && (tdata->tp_info.transport != transport)) {
-               tdata->tp_info.transport = transport;
+       if (tdata->tp_info.transport->key.type == PJSIP_TRANSPORT_UDP ||
+               tdata->tp_info.transport->key.type == PJSIP_TRANSPORT_UDP6) {
+               transport = multihomed_get_udp_transport(&prm.ret_addr, prm.ret_port);
+               if (transport && (tdata->tp_info.transport != transport)) {
+                       tdata->tp_info.transport = transport;
+               }
        }
 
        /* If the message needs to be updated with new address do so */