From da75a96ec504f2a16bc8ce9d7d8733cc05e7ea4c Mon Sep 17 00:00:00 2001
From: Stefan Knoblich <stkn@freeswitch.org>
Date: Tue, 18 Dec 2007 22:06:20 +0000
Subject: [PATCH] Correctly handle a transport= parameter passed via
 destination url to mod_sofia

git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@6883 d0543943-73ff-0310-b7d9-9358b9ac24b2
---
 src/mod/endpoints/mod_sofia/sofia_glue.c | 15 ++++++++-------
 1 file changed, 8 insertions(+), 7 deletions(-)

diff --git a/src/mod/endpoints/mod_sofia/sofia_glue.c b/src/mod/endpoints/mod_sofia/sofia_glue.c
index 69c81335d8..96dabba8aa 100644
--- a/src/mod/endpoints/mod_sofia/sofia_glue.c
+++ b/src/mod/endpoints/mod_sofia/sofia_glue.c
@@ -701,18 +701,19 @@ switch_status_t sofia_glue_do_invite(switch_core_session_t *session)
 			rpid_domain = "cluecon.com";
 		}
 
-		if (switch_stristr("port=tcp", url)) {
-			transport = SOFIA_TRANSPORT_TCP;
+		if ((p = (char *)switch_stristr("port=", url))) {
+			p += 5;
+			transport = sofia_glue_str2transport( p );
 		} else {
 			if ((t_var = switch_channel_get_variable(channel, "sip_transport"))) {
-				sofia_transport_t t_val;
-
-				if ((t_val = sofia_glue_str2transport(t_var)) != SOFIA_TRANSPORT_UNKNOWN) {
-					transport = t_val;
-				}
+				transport = sofia_glue_str2transport(t_var);
 			}
 		}
 
+		if (transport == SOFIA_TRANSPORT_UNKNOWN) {
+			transport = SOFIA_TRANSPORT_UDP;
+		}
+
 		if (switch_strlen_zero(tech_pvt->invite_contact)) {
 			if (sofia_glue_transport_has_tls(transport))
 				tech_pvt->invite_contact = tech_pvt->profile->tls_url;