From: Anthony Minessale Date: Wed, 30 Sep 2009 21:06:01 +0000 (+0000) Subject: cover up sofia bug parsing contact strings that do not have <> in them X-Git-Tag: v1.0.6~1765 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=07d223b30eb22af48c6cc8991b66416a3632bb40;p=thirdparty%2Ffreeswitch.git cover up sofia bug parsing contact strings that do not have <> in them git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@15026 d0543943-73ff-0310-b7d9-9358b9ac24b2 --- diff --git a/src/mod/endpoints/mod_sofia/mod_sofia.c b/src/mod/endpoints/mod_sofia/mod_sofia.c index 594bc33fb3..f66249064d 100644 --- a/src/mod/endpoints/mod_sofia/mod_sofia.c +++ b/src/mod/endpoints/mod_sofia/mod_sofia.c @@ -1304,8 +1304,15 @@ static switch_status_t sofia_receive_message(switch_core_session_t *session, swi 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);