MODENDP-242

git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@14581 d0543943-73ff-0310-b7d9-9358b9ac24b2
This commit is contained in:
Mathieu Rene committed 2009-08-21 00:59:09 +00:00
1 parent b24a2863c0
commit 49e87ddfe8
4 files changed
+78 -128

No files matched your search

+3 -63
View File
@@ -439,11 +439,8 @@ int sofia_sub_del_callback(void *pArg, int argc, char **argv, char **columnNames
void sofia_reg_send_reboot(sofia_profile_t *profile, const char *user, const char *host, const char *contact, const char *user_agent, const char *network_ip)
{
const char *event = "check-sync";
nua_handle_t *nh;
char *contact_url = NULL;
char *contact_str = NULL;
char *user_via = NULL;
char *id = NULL;
const char *contenttype = "application/simple-message-summary";
const char *body = "";
if (switch_stristr("snom", user_agent)) {
event = "check-sync;reboot=true";
@@ -451,65 +448,8 @@ void sofia_reg_send_reboot(sofia_profile_t *profile, const char *user, const cha
event = "reboot_now";
}
if ((contact_url = sofia_glue_get_url_from_contact((char *)contact, 1))) {
char *p;
id = switch_mprintf("sip:%s@%s", user, network_ip);
sofia_glue_send_notify(profile, user, host, event, contenttype, body, contact, network_ip);
if ((p = strstr(contact_url, ";fs_"))) {
*p = '\0';
}
if (sofia_glue_check_nat(profile, network_ip)) {
char *ptr = NULL;
const char *transport_str = NULL;
if ((ptr = sofia_glue_find_parameter(contact_url, "transport="))) {
sofia_transport_t transport = sofia_glue_str2transport(ptr);
transport_str = sofia_glue_transport2str(transport);
switch (transport) {
case SOFIA_TRANSPORT_TCP:
contact_str = profile->tcp_public_contact;
break;
case SOFIA_TRANSPORT_TCP_TLS:
contact_str = profile->tls_public_contact;
break;
default:
contact_str = profile->public_url;
break;
}
user_via = sofia_glue_create_external_via(NULL, profile, transport);
} else {
user_via = sofia_glue_create_external_via(NULL, profile, SOFIA_TRANSPORT_UDP);
contact_str = profile->public_url;
}
} else {
contact_str = profile->url;
}
nh = nua_handle(profile->nua, NULL,
NUTAG_URL(contact_url),
SIPTAG_FROM_STR(id),
SIPTAG_TO_STR(id),
SIPTAG_CONTACT_STR(contact_str),
TAG_END());
nua_handle_bind(nh, &mod_sofia_globals.destroy_private);
nua_notify(nh,
NUTAG_NEWSUB(1),
TAG_IF(user_via, SIPTAG_VIA_STR(user_via)),
SIPTAG_EVENT_STR(event),
SIPTAG_CONTENT_TYPE_STR("application/simple-message-summary"),
SIPTAG_PAYLOAD_STR(""),
TAG_END());
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_NOTICE, "Sending reboot command to %s\n", contact_url);
free(contact_url);
}
switch_safe_free(user_via);
switch_safe_free(id);
}
int sofia_sla_dialog_del_callback(void *pArg, int argc, char **argv, char **columnNames)