]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
[mod_sofia] Update Polycom UA to recognize new Poly phones
authorjunction1153b <junction1153+custom@gmail.com>
Mon, 20 Jan 2025 21:57:25 +0000 (16:57 -0500)
committerGitHub <noreply@github.com>
Mon, 20 Jan 2025 21:57:25 +0000 (00:57 +0300)
We observed that the new Poly phones (formerly known as Polycom) were not getting sent a SIP UPDATE in certain circumstances (example: retrieving a parked call, and therefore, Caller ID would not show the parked caller). I renamed Polycom to Poly which will catch all Poly AND Polycom UA's. I also added Acrobits, and Ringotel to extend such functionality to those UA's. There were also other minor compatibility issues with the new Poly phones which have been resolved with tweaking the UA recognition on the code.

Co-authored-by: Joseph <junction1153@gmail.com>
src/mod/endpoints/mod_sofia/mod_sofia.c
src/mod/endpoints/mod_sofia/sofia.c
src/mod/endpoints/mod_sofia/sofia_presence.c
src/mod/endpoints/mod_sofia/sofia_reg.c

index c41ed9b2e38c37bff9e36fd5447f8a1c1ad866b3..086d6dd088552b5a200c3781c9cfd4c6f7926619 100644 (file)
@@ -254,7 +254,7 @@ char *generate_pai_str(private_object_t *tech_pvt)
        callee_number = switch_sanitize_number(switch_core_session_strdup(session, callee_number));
        callee_name = switch_sanitize_number(switch_core_session_strdup(session, callee_name));
 
-       if (!zstr(callee_number) && (zstr(ua) || !switch_stristr("polycom", ua))) {
+       if (!zstr(callee_number) && (zstr(ua) || !switch_stristr("poly", ua))) {
                callee_number = switch_core_session_sprintf(session, "sip:%s@%s", callee_number, host);
        }
 
@@ -2075,13 +2075,15 @@ static switch_status_t sofia_receive_message(switch_core_session_t *session, swi
                                                        nua_info(tech_pvt->nh, SIPTAG_CONTENT_TYPE_STR("message/sipfrag"),
                                                                         TAG_IF(!zstr(tech_pvt->user_via), SIPTAG_VIA_STR(tech_pvt->user_via)), SIPTAG_PAYLOAD_STR(message), TAG_END());
                                                } else if (update_allowed && ua && (switch_channel_var_true(tech_pvt->channel, "update_ignore_ua") ||
-                                                                         switch_stristr("polycom", ua) ||
+                                                                         switch_stristr("poly", ua) ||
                                                                          (switch_stristr("aastra", ua) && !switch_stristr("Intelligate", ua)) ||
                                                                          (switch_stristr("cisco/spa50", ua) ||
                                                                          switch_stristr("cisco/spa525", ua)) ||
                                                                          switch_stristr("cisco/spa30", ua) ||
                                                                          switch_stristr("Fanvil", ua) ||
                                                                          switch_stristr("Grandstream", ua) ||
+                                                                         switch_stristr("Ringotel", ua) ||
+                                                                         switch_stristr("Groundwire", ua) ||                                                                     
                                                                          switch_stristr("Yealink", ua) ||
                                                                          switch_stristr("Mitel", ua) ||
                                                                          switch_stristr("Panasonic", ua))) {
@@ -2152,7 +2154,7 @@ static switch_status_t sofia_receive_message(switch_core_session_t *session, swi
                                                                 SIPTAG_PAYLOAD_STR(message),
                                                                 TAG_IF(!zstr(session_id_header), SIPTAG_HEADER_STR(session_id_header)),
                                                                 TAG_END());
-                                       } else if (ua && switch_stristr("polycom", ua)) {
+                                       } else if (ua && switch_stristr("poly", ua)) {
                                                snprintf(message, sizeof(message), "P-Asserted-Identity: \"%s\" <%s>", msg->string_arg, tech_pvt->caller_profile->destination_number);
                                                nua_update(tech_pvt->nh,
                                                                   NUTAG_SESSION_TIMER(tech_pvt->session_timeout),
index a370b52442d3437af9dfe1591a185803fdfce7b1..77e47508129817e47ee6b318029d5c1d3eeb9b74 100644 (file)
@@ -10476,7 +10476,7 @@ void sofia_handle_sip_i_invite(switch_core_session_t *session, nua_t *nua, sofia
                (!is_tcp && !is_tls && (zstr(network_ip) || !switch_check_network_list_ip(network_ip, profile->local_network)) &&
                 profile->server_rport_level >= 2 && sip->sip_user_agent &&
                 sip->sip_user_agent->g_string &&
-                (!strncasecmp(sip->sip_user_agent->g_string, "Polycom", 7) || !strncasecmp(sip->sip_user_agent->g_string, "KIRK Wireless Server", 20)))
+                (!strncasecmp(sip->sip_user_agent->g_string, "Poly", 4) || !strncasecmp(sip->sip_user_agent->g_string, "KIRK Wireless Server", 20)))
                ) {
                if (sip->sip_via) {
                        const char *port = sip->sip_via->v_port;
index 48ad579411117f98a071b550c495875a82fc523e..151d6ec634e90057d010f723e49d13f571bf0979 100644 (file)
@@ -2501,7 +2501,7 @@ static char *gen_pidf(char *user_agent, char *id, char *url, char *open, char *r
 {
        char *ret = NULL;
 
-       if (switch_stristr("polycom", user_agent)) {
+       if (switch_stristr("poly", user_agent)) {
                *ct = "application/xpidf+xml";
 
                /* If unknown/none prpid is provided, just show the user as online. */
index d9e04528a815a7fd880087c2aff187a0b653db1f..ccd42bf6ab184d509a201cab2dec620953fb6b97 100644 (file)
@@ -1661,7 +1661,7 @@ uint8_t sofia_reg_handle_register_token(nua_t *nua, sofia_profile_t *profile, nu
                        if (!is_tcp && !is_tls && (zstr(network_ip) || !switch_check_network_list_ip(network_ip, profile->local_network)) &&
                                profile->server_rport_level >= 2 && sip->sip_user_agent &&
                                sip->sip_user_agent->g_string &&
-                               ( !strncasecmp(sip->sip_user_agent->g_string, "Polycom", 7) ||
+                               ( !strncasecmp(sip->sip_user_agent->g_string, "Poly", 4) ||
                                  !strncasecmp(sip->sip_user_agent->g_string, "KIRK Wireless Server", 20) ||
                                  !strncasecmp(sip->sip_user_agent->g_string, "ADTRAN_Total_Access", 19) )) {
                                if (sip->sip_via) {