[Freeswitch-svn] [commit] r13527 - freeswitch/trunk/src/mod/endpoints/mod_sofia

FreeSWITCH SVN brian at freeswitch.org
Mon Jun 1 06:45:51 PDT 2009


Author: brian
Date: Mon Jun  1 08:45:50 2009
New Revision: 13527

Log:
 sigh, guess we can only do this on snom and polycom right now to be safe 

Modified:
   freeswitch/trunk/src/mod/endpoints/mod_sofia/mod_sofia.c
   freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia.c

Modified: freeswitch/trunk/src/mod/endpoints/mod_sofia/mod_sofia.c
==============================================================================
--- freeswitch/trunk/src/mod/endpoints/mod_sofia/mod_sofia.c	(original)
+++ freeswitch/trunk/src/mod/endpoints/mod_sofia/mod_sofia.c	Mon Jun  1 08:45:50 2009
@@ -179,16 +179,21 @@
 {
 	private_object_t *tech_pvt = (private_object_t *) switch_core_session_get_private(session);
 	const char *callee_name = NULL, *callee_number = NULL;
+	const char *ua = switch_channel_get_variable(tech_pvt->channel, "sip_user_agent");
 
-	if (!(callee_name = switch_channel_get_variable(tech_pvt->channel, "callee_id_name"))) {
-		callee_name = "";
-	}
+	if (ua && switch_stristr("polycom", ua)) {
+		if (!(callee_name = switch_channel_get_variable(tech_pvt->channel, "callee_id_name"))) {
+			callee_name = "";
+		}
+
+		if (!(callee_number = switch_channel_get_variable(tech_pvt->channel, "callee_id_number"))) {
+			callee_number = tech_pvt->caller_profile->destination_number;
+		}
 
-	if (!(callee_number = switch_channel_get_variable(tech_pvt->channel, "callee_id_number"))) {
-		callee_number = tech_pvt->caller_profile->destination_number;
+		return switch_core_session_sprintf(tech_pvt->session, "P-Asserted-Identity: \"%s\" <%s>", callee_name, callee_number);
 	}
 
-	return switch_core_session_sprintf(tech_pvt->session, "P-Asserted-Identity: \"%s\" <%s>", callee_name, callee_number);
+	return NULL;
 }
 
 /* map QSIG cause codes to SIP from RFC4497 section 8.4.1 */
@@ -1258,7 +1263,7 @@
 				if (ua && switch_stristr("snom", ua)) {
 					snprintf(message, sizeof(message), "From:\r\nTo: \"%s\" %s\r\n", msg->string_arg, tech_pvt->caller_profile->destination_number);
 					nua_info(tech_pvt->nh, SIPTAG_CONTENT_TYPE_STR("message/sipfrag"), SIPTAG_PAYLOAD_STR(message), TAG_END());
-				} else {
+				} else if (ua && switch_stristr("polycom", ua)) {
 					snprintf(message, sizeof(message), "P-Asserted-Identity: \"%s\" <%s>", msg->string_arg, tech_pvt->caller_profile->destination_number);
 					nua_update(tech_pvt->nh,
 							   TAG_IF(!switch_strlen_zero_buf(message), SIPTAG_HEADER_STR(message)),
@@ -1274,8 +1279,17 @@
 			sofia_glue_do_invite(session);
 			if (!switch_strlen_zero(msg->string_arg)) {
 				char message[256] = "";
-				snprintf(message, sizeof(message), "From:\r\nTo: \"%s\"\r\n", msg->string_arg);
-				nua_info(tech_pvt->nh, SIPTAG_CONTENT_TYPE_STR("message/sipfrag"), SIPTAG_PAYLOAD_STR(message), TAG_END());
+				const char *ua = switch_channel_get_variable(tech_pvt->channel, "sip_user_agent");
+
+				if (ua && switch_stristr("snom", ua)) {
+					snprintf(message, sizeof(message), "From:\r\nTo: \"%s\" %s\r\n", msg->string_arg, tech_pvt->caller_profile->destination_number);
+					nua_info(tech_pvt->nh, SIPTAG_CONTENT_TYPE_STR("message/sipfrag"), SIPTAG_PAYLOAD_STR(message), TAG_END());
+				} else if (ua && switch_stristr("polycom", ua)) {
+					snprintf(message, sizeof(message), "P-Asserted-Identity: \"%s\" <%s>", msg->string_arg, tech_pvt->caller_profile->destination_number);
+					nua_update(tech_pvt->nh,
+							   TAG_IF(!switch_strlen_zero_buf(message), SIPTAG_HEADER_STR(message)),
+							   TAG_END());
+				}
 			}
 		}
 		break;

Modified: freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia.c
==============================================================================
--- freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia.c	(original)
+++ freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia.c	Mon Jun  1 08:45:50 2009
@@ -5072,7 +5072,7 @@
 					snprintf(message, sizeof(message), "From:\r\nTo: \"%s\" %s\r\n", acp->caller_id_name, acp->caller_id_number);
 				}
 				nua_info(b_tech_pvt->nh, SIPTAG_CONTENT_TYPE_STR("message/sipfrag"), SIPTAG_PAYLOAD_STR(message), TAG_END());
-			} else {
+			} else if (ua && switch_stristr("polycom", ua)) {
 				if (switch_strlen_zero(acp->caller_id_name)) {
 					snprintf(message, sizeof(message), "P-Asserted-Identity: \"%s\" <%s>", acp->caller_id_number, acp->caller_id_number);
 				} else {



More information about the Freeswitch-svn mailing list