]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
sigh, guess we can only do this on snom and polycom right now to be safe
authorBrian West <brian@freeswitch.org>
Mon, 1 Jun 2009 13:45:50 +0000 (13:45 +0000)
committerBrian West <brian@freeswitch.org>
Mon, 1 Jun 2009 13:45:50 +0000 (13:45 +0000)
git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@13527 d0543943-73ff-0310-b7d9-9358b9ac24b2

src/mod/endpoints/mod_sofia/mod_sofia.c
src/mod/endpoints/mod_sofia/sofia.c

index f006dd1fd72b243a3f429be6b03b63bc93db0507..2d1bf3b30a3c77d30a286f38d30496a5262e4819 100644 (file)
@@ -179,16 +179,21 @@ char * generate_pai_str(switch_core_session_t *session)
 {
        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 @@ static switch_status_t sofia_receive_message(switch_core_session_t *session, swi
                                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 @@ static switch_status_t sofia_receive_message(switch_core_session_t *session, swi
                        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;
index 7628dbb293bd92ec789fe8c3ea6473a8c40c6037..9ada7ebf678d513720cdc0a675e83d5fae0d5b33 100644 (file)
@@ -5072,7 +5072,7 @@ static void sofia_info_send_sipfrag(switch_core_session_t *aleg, switch_core_ses
                                        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 {