diff --git a/libs/sofia-sip/.update b/libs/sofia-sip/.update index 5c84424678..692541efac 100644 --- a/libs/sofia-sip/.update +++ b/libs/sofia-sip/.update @@ -1 +1 @@ -Mon Jan 16 12:47:24 CST 2012 +Mon Jan 16 17:26:19 CST 2012 diff --git a/libs/sofia-sip/libsofia-sip-ua/nua/nua_notifier.c b/libs/sofia-sip/libsofia-sip-ua/nua/nua_notifier.c index 923e8de416..e7d3d7470f 100644 --- a/libs/sofia-sip/libsofia-sip-ua/nua/nua_notifier.c +++ b/libs/sofia-sip/libsofia-sip-ua/nua/nua_notifier.c @@ -428,12 +428,16 @@ int nua_subscribe_server_report(nua_server_request_t *sr, tagi_t const *tags) * @sa @RFC3265, #nua_i_subscribe, #nua_i_refer, NUTAG_ALLOW_EVENTS() */ +#if 0 static int nua_notify_client_init(nua_client_request_t *cr, msg_t *, sip_t *, tagi_t const *tags); + + static int nua_notify_client_init_etag(nua_client_request_t *cr, msg_t *msg, sip_t *sip, tagi_t const *tags); + static int nua_notify_client_request(nua_client_request_t *cr, msg_t *, sip_t *, tagi_t const *tags); @@ -442,7 +446,8 @@ static int nua_notify_client_report(nua_client_request_t *cr, sip_t const *sip, nta_outgoing_t *orq, tagi_t const *tags); - +#endif +#if 0 static nua_client_methods_t const nua_notify_client_methods = { SIP_METHOD_NOTIFY, /* crm_method, crm_method_name */ 0, /* crm_extra */ @@ -460,6 +465,25 @@ static nua_client_methods_t const nua_notify_client_methods = { nua_notify_client_report, /* crm_report */ NULL, /* crm_complete */ }; +#endif + +nua_client_methods_t const nua_notify_client_methods = { + SIP_METHOD_NOTIFY, /* crm_method, crm_method_name */ + 0, /* crm_extra */ + { /* crm_flags */ + /* create_dialog */ 1, + /* in_dialog */ 1, + /* target refresh */ 1 + }, + NULL, /* crm_template */ + NULL, /* crm_init */ + NULL, /* crm_send */ + NULL, /* crm_check_restart */ + NULL, /* crm_recv */ + NULL, /* crm_preliminary */ + NULL, /* crm_report */ + NULL, /* crm_complete */ +}; /**@internal Send NOTIFY. */ int nua_stack_notify(nua_t *nua, @@ -469,7 +493,7 @@ int nua_stack_notify(nua_t *nua, { return nua_client_create(nh, e, &nua_notify_client_methods, tags); } - +#if 0 static int nua_notify_client_init(nua_client_request_t *cr, msg_t *msg, sip_t *sip, tagi_t const *tags) @@ -715,7 +739,7 @@ int nua_notify_client_request(nua_client_request_t *cr, return nua_base_client_request(cr, msg, sip, tags); } - +#endif /** @NUA_EVENT nua_r_notify * * Response to an outgoing @b NOTIFY request. @@ -747,7 +771,7 @@ int nua_notify_client_request(nua_client_request_t *cr, * * @END_NUA_EVENT */ - +#if 0 static int nua_notify_client_report(nua_client_request_t *cr, int status, char const *phrase, sip_t const *sip, @@ -782,7 +806,7 @@ static int nua_notify_client_report(nua_client_request_t *cr, return 0; } - +#endif static void nua_notify_usage_refresh(nua_handle_t *nh, nua_dialog_state_t *ds, diff --git a/src/mod/endpoints/mod_sofia/sofia_presence.c b/src/mod/endpoints/mod_sofia/sofia_presence.c index d1993767ad..cbcc177237 100644 --- a/src/mod/endpoints/mod_sofia/sofia_presence.c +++ b/src/mod/endpoints/mod_sofia/sofia_presence.c @@ -1703,12 +1703,12 @@ static void send_presence_notify(sofia_profile_t *profile, cseq = sip_cseq_create(nh->nh_home, callsequence, SIP_METHOD_NOTIFY); nua_handle_bind(nh, &mod_sofia_globals.destroy_private); - if (exptime > 0) { - switch_snprintf(sstr, sizeof(sstr), "active;expires=%u", (unsigned) exptime); - } else { - switch_snprintf(sstr, sizeof(sstr), "terminated;reason=noresource"); + if (exptime <= 0) { + exptime = 5; } + switch_snprintf(sstr, sizeof(sstr), "active;expires=%u", (unsigned) exptime); + tmp = (char *)contact; contact = sofia_glue_get_url_from_contact(tmp, 0); @@ -3701,6 +3701,8 @@ void sofia_presence_check_subscriptions(sofia_profile_t *profile, time_t now) char *sql; if (now) { + +#if 0 // I think actually doing it right and sending terminated notify breaks dumb phones. sql = switch_mprintf("select full_to, full_from, contact, expires, call_id, event, network_ip, network_port, " "NULL as ct, NULL as pt " " from sip_subscriptions where (expires = -1 or (expires > 0 and expires <= %ld)) and hostname='%q'", @@ -3708,6 +3710,7 @@ void sofia_presence_check_subscriptions(sofia_profile_t *profile, time_t now) sofia_glue_execute_sql_callback(profile, profile->ireg_mutex, sql, sofia_presence_send_sql, profile); switch_safe_free(sql); +#endif sql = switch_mprintf("delete from sip_subscriptions where (expires = -1 or (expires > 0 and expires <= %ld)) and hostname='%q'", (long) now, mod_sofia_globals.hostname); diff --git a/src/mod/endpoints/mod_sofia/sofia_reg.c b/src/mod/endpoints/mod_sofia/sofia_reg.c index 16b22a52c6..7403bc05b5 100644 --- a/src/mod/endpoints/mod_sofia/sofia_reg.c +++ b/src/mod/endpoints/mod_sofia/sofia_reg.c @@ -572,19 +572,6 @@ int sofia_reg_nat_callback(void *pArg, int argc, char **argv, char **columnNames } -int sofia_sub_del_callback(void *pArg, int argc, char **argv, char **columnNames) -{ - sofia_profile_t *profile = (sofia_profile_t *) pArg; - nua_handle_t *nh; - - if (argv[0]) { - if ((nh = nua_handle_by_call_id(profile->nua, argv[0]))) { - nua_handle_destroy(nh); - } - } - return 0; -} - 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) { @@ -760,18 +747,6 @@ void sofia_reg_check_expire(sofia_profile_t *profile, time_t now, int reboot) sofia_glue_actually_execute_sql(profile, sql, NULL); - if (now) { - switch_snprintf(sql, sizeof(sql), - "select call_id from sip_subscriptions where (expires = -1 or (expires > 0 and expires <= %ld)) and hostname='%s'", (long) now, - mod_sofia_globals.hostname); - } else { - switch_snprintfv(sql, sizeof(sql), "select sub_to_user,sub_to_host,call_id from sip_subscriptions where expires >= -1 and hostname='%q'", - mod_sofia_globals.hostname); - } - - sofia_glue_execute_sql_callback(profile, NULL, sql, sofia_sub_del_callback, profile); - - sofia_presence_check_subscriptions(profile, now); if (now) { @@ -879,10 +854,6 @@ void sofia_reg_check_sync(sofia_profile_t *profile) switch_snprintfv(sql, sizeof(sql), "delete from sip_authentication where expires > 0 and hostname='%q'", mod_sofia_globals.hostname); sofia_glue_actually_execute_sql(profile, sql, NULL); - switch_snprintfv(sql, sizeof(sql), "select sub_to_user,sub_to_host,call_id from sip_subscriptions where expires >= -1 and hostname='%q'", - mod_sofia_globals.hostname); - sofia_glue_execute_sql_callback(profile, NULL, sql, sofia_sub_del_callback, profile); - switch_snprintfv(sql, sizeof(sql), "delete from sip_subscriptions where expires >= -1 and hostname='%q'", mod_sofia_globals.hostname); sofia_glue_actually_execute_sql(profile, sql, NULL);