Revision
15026
Author
anthm
Date
2009-09-30 16:06:01 -0500 (Wed, 30 Sep 2009)

Log Message

cover up sofia bug parsing contact strings that do not have <> in them

Modified Paths

Diff

Modified: freeswitch/trunk/src/mod/endpoints/mod_sofia/mod_sofia.c (15025 => 15026)


--- freeswitch/trunk/src/mod/endpoints/mod_sofia/mod_sofia.c	2009-09-30 20:15:00 UTC (rev 15025)
+++ freeswitch/trunk/src/mod/endpoints/mod_sofia/mod_sofia.c	2009-09-30 21:06:01 UTC (rev 15026)
@@ -1304,8 +1304,15 @@
 	case SWITCH_MESSAGE_INDICATE_REDIRECT:
 		if (!switch_strlen_zero(msg->string_arg)) {
 			if (!switch_channel_test_flag(channel, CF_ANSWERED) && !sofia_test_flag(tech_pvt, TFLAG_BYE)) {
-				switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG, "Redirecting to %s\n", msg->string_arg);
-				nua_respond(tech_pvt->nh, SIP_302_MOVED_TEMPORARILY, SIPTAG_CONTACT_STR(msg->string_arg), TAG_END());
+				char *dest = (char *) msg->string_arg;
+
+				if (!strchr(msg->string_arg, '<') && !strchr(msg->string_arg, '>')) {
+					dest = switch_core_session_sprintf(session, "\"unknown\" <%s>", msg->string_arg);
+				}
+				
+				switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG, "Redirecting to %s\n", dest);
+
+				nua_respond(tech_pvt->nh, SIP_302_MOVED_TEMPORARILY, SIPTAG_CONTACT_STR(dest), TAG_END());
 				sofia_set_flag_locked(tech_pvt, TFLAG_BYE);
 			} else {
 				switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_WARNING, "Too late for redirecting to %s, already answered\n", msg->string_arg);