Modified: freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia.c (14250 => 14251)
--- freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia.c 2009-07-14 19:32:42 UTC (rev 14250)
+++ freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia.c 2009-07-14 19:49:34 UTC (rev 14251)
@@ -4856,13 +4856,16 @@
}
if (url) {
- if (strchr(url, '>')) {
- tech_pvt->reply_contact = switch_core_session_sprintf(session, "%s;transport=%s", url,
- sofia_glue_transport2str(transport));
- } else {
- tech_pvt->reply_contact = switch_core_session_sprintf(session, "<%s;transport=%s>", url,
- sofia_glue_transport2str(transport));
- }
+ const char *brackets = NULL;
+ const char *proto = NULL;
+
+ brackets = strchr(url, '>');
+ proto = switch_stristr("transport=", url);
+ tech_pvt->reply_contact = switch_core_session_sprintf(session, "%s%s%s%s%s",
+ brackets ? "" : "<", url,
+ proto ? "" : ";transport=",
+ proto ? "" : sofia_glue_transport2str(transport),
+ brackets ? "" : ">");
} else {
switch_channel_hangup(tech_pvt->channel, SWITCH_CAUSE_DESTINATION_OUT_OF_ORDER);
}
@@ -4876,13 +4879,16 @@
}
if (url) {
- if (strchr(url, '>')) {
- tech_pvt->reply_contact = switch_core_session_sprintf(session, "%s;transport=%s", url,
- sofia_glue_transport2str(transport));
- } else {
- tech_pvt->reply_contact = switch_core_session_sprintf(session, "<%s;transport=%s>", url,
- sofia_glue_transport2str(transport));
- }
+ const char *brackets = NULL;
+ const char *proto = NULL;
+
+ brackets = strchr(url, '>');
+ proto = switch_stristr("transport=", url);
+ tech_pvt->reply_contact = switch_core_session_sprintf(session, "%s%s%s%s%s",
+ brackets ? "" : "<", url,
+ proto ? "" : ";transport=",
+ proto ? "" : sofia_glue_transport2str(transport),
+ brackets ? "" : ">");
} else {
switch_channel_hangup(tech_pvt->channel, SWITCH_CAUSE_DESTINATION_OUT_OF_ORDER);
}