[Freeswitch-svn] [commit] r13558 - freeswitch/branches/brian/trunk/src/mod/endpoints/mod_sofia
Author: brian Date: Tue Jun 2 18:02:13 2009 New Revision: 13558 Log: patch the XML so that if it happens to traverse nat it'll display the pickup and barge correctly for the phone Modified: freeswitch/branches/brian/trunk/src/mod/endpoints/mod_sofia/sofia_presence.c freeswitch/branches/brian/trunk/src/mod/endpoints/mod_sofia/sofia_sla.c Modified: freeswitch/branches/brian/trunk/src/mod/endpoints/mod_sofia/sofia_presence.c ============================================================================== --- freeswitch/branches/brian/trunk/src/mod/endpoints/mod_sofia/sofia_presence.c (original) +++ freeswitch/branches/brian/trunk/src/mod/endpoints/mod_sofia/sofia_presence.c Tue Jun 2 18:02:13 2009 @@ -1426,7 +1426,6 @@ if ((ptr = sofia_glue_find_parameter(o_contact, "transport="))) { sofia_transport_t transport = sofia_glue_str2transport(ptr); user_via = switch_mprintf("SIP/2.0/%s %s;rport", sofia_glue_transport2str(transport), profile->extsipip); - printf("user_via -> %s\n", user_via); } else { user_via = switch_mprintf("SIP/2.0/UDP %s;rport", profile->extsipip); } Modified: freeswitch/branches/brian/trunk/src/mod/endpoints/mod_sofia/sofia_sla.c ============================================================================== --- freeswitch/branches/brian/trunk/src/mod/endpoints/mod_sofia/sofia_sla.c (original) +++ freeswitch/branches/brian/trunk/src/mod/endpoints/mod_sofia/sofia_sla.c Tue Jun 2 18:02:13 2009 @@ -313,7 +313,7 @@ sip->sip_contact->m_url->url_host, sofia_glue_transport2str(transport)); if (sip->sip_payload && sip->sip_payload->pl_data) { - sql = switch_mprintf("select subscriber,call_id,aor,profile_name,hostname,contact_str from sip_shared_appearance_subscriptions where " + sql = switch_mprintf("select subscriber,call_id,aor,profile_name,hostname,contact_str,network_ip from sip_shared_appearance_subscriptions where " "aor='%q' and profile_name='%q' and hostname='%q'", aor, profile->name, mod_sofia_globals.hostname); @@ -338,9 +338,10 @@ /* char *profile_name = argv[3]; */ /* char *hostname = argv[4]; */ char *contact_str = argv[5]; + char *network_ip = argv[6]; nua_handle_t *nh; char *route_uri = NULL; - + char *xml_fixup = NULL; nh = nua_handle_by_call_id(helper->profile->nua, call_id); /* that's all you need to find the subscription's nh */ if (nh) { @@ -363,14 +364,23 @@ *p++ = '\0'; } } - + + if (sofia_test_pflag(helper->profile, PFLAG_AUTO_NAT) && !switch_check_network_list_ip(network_ip, helper->profile->local_network)) { + xml_fixup = switch_string_replace(helper->payload, helper->profile->sipip, helper->profile->extsipip); + } else if (sofia_test_pflag(helper->profile, PFLAG_AUTO_NAT) && switch_check_network_list_ip(network_ip, helper->profile->local_network)) { + xml_fixup = switch_string_replace(helper->payload, helper->profile->extsipip, helper->profile->sipip); + } else { + xml_fixup = helper->payload; + } + nua_notify(nh, SIPTAG_SUBSCRIPTION_STATE_STR("active;expires=300"), /* XXX MTK FIXME - this is totally fake calculation */ TAG_IF(route_uri, NUTAG_PROXY(route_uri)), SIPTAG_CONTENT_TYPE_STR("application/dialog-info+xml"), /* could've just kept the type from the payload */ - SIPTAG_PAYLOAD_STR(helper->payload), + SIPTAG_PAYLOAD_STR(xml_fixup), TAG_END()); switch_safe_free(route_uri); + switch_safe_free(xml_fixup); } return 0; }
participants (1)
-
FreeSWITCH SVN