]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
FS-3794 remove delete-subs-on-register param and some tweaks based on this bug report
authorAnthony Minessale <anthm@freeswitch.org>
Tue, 3 Jan 2012 17:40:52 +0000 (11:40 -0600)
committerAnthony Minessale <anthm@freeswitch.org>
Tue, 3 Jan 2012 17:40:52 +0000 (11:40 -0600)
src/mod/endpoints/mod_sofia/mod_sofia.h
src/mod/endpoints/mod_sofia/sofia.c
src/mod/endpoints/mod_sofia/sofia_presence.c
src/mod/endpoints/mod_sofia/sofia_reg.c

index 490fe1a9d43b2d51cae9df37c0b8d991a052063c..33a9538fde54df216204956e2907baa36af2c388 100644 (file)
@@ -247,7 +247,7 @@ typedef enum {
        PFLAG_T38_PASSTHRU,
        PFLAG_CID_IN_1XX,
        PFLAG_IN_DIALOG_CHAT,
-       PFLAG_DEL_SUBS_ON_REG,
+       PFLAG_DEL_SUBS_ON_REG_REUSE,
        PFLAG_IGNORE_183NOSDP,
        PFLAG_PRESENCE_PROBE_ON_REGISTER,
        PFLAG_PRESENCE_ON_REGISTER,
index 07ea5d2bbe691845ee569b601aca21248e81d3c8..b1e65d0d36f8b3de428e367209b41cbec44a3da1 100644 (file)
@@ -2921,12 +2921,6 @@ switch_status_t reconfig_sofia(sofia_profile_t *profile)
                                                } else {
                                                        sofia_clear_pflag(profile, PFLAG_PASS_CALLEE_ID);
                                                }
-                                       } else if (!strcasecmp(var, "delete-subs-on-register")) {
-                                               if (switch_true(val)) {
-                                                       sofia_set_pflag(profile, PFLAG_DEL_SUBS_ON_REG);
-                                               } else {
-                                                       sofia_clear_pflag(profile, PFLAG_DEL_SUBS_ON_REG);
-                                               }
                                        } else if (!strcasecmp(var, "watchdog-enabled")) {
                                                profile->watchdog_enabled = switch_true(val);
                                        } else if (!strcasecmp(var, "watchdog-step-timeout")) {
@@ -3779,12 +3773,6 @@ switch_status_t config_sofia(int reload, char *profile_name)
                                                } else {
                                                        sofia_clear_pflag(profile, PFLAG_IN_DIALOG_CHAT);
                                                }
-                                       } else if (!strcasecmp(var, "delete-subs-on-register")) {
-                                               if (switch_true(val)) {
-                                                       sofia_set_pflag(profile, PFLAG_DEL_SUBS_ON_REG);
-                                               } else {
-                                                       sofia_clear_pflag(profile, PFLAG_DEL_SUBS_ON_REG);
-                                               }
                                        } else if (!strcasecmp(var, "t38-passthru")) {
                                                if (switch_true(val)) {
                                                        sofia_set_pflag(profile, PFLAG_T38_PASSTHRU);
index c1e4031b369a8ed37b1a62389cf37284141e05bd..159d31143e8aaa8265fafdbdd56425ef083f70aa 100644 (file)
@@ -2877,25 +2877,25 @@ void sofia_presence_handle_sip_i_subscribe(int status,
                proto = alt_proto;
        }
        
-       if ((sub_state == nua_substate_active) && (switch_stristr("dialog", (const char *) event))) {
+       if ((sub_state == nua_substate_active)) {
                
                sstr = switch_mprintf("active;expires=%ld", exp_delta);
                
                sql = switch_mprintf("update sip_subscriptions "
                                                         "set expires=%ld "
-                                                        "where call_id='%q' and event='dialog' and hostname='%q' ",
+                                                        "where call_id='%q'",
                                                         (long) switch_epoch_time_now(NULL) + exp_delta,
-                                                        call_id,
-                                                        mod_sofia_globals.hostname);
-               
+                                                        call_id);
 
                if (mod_sofia_globals.debug_presence > 0 || mod_sofia_globals.debug_sla > 0) {
                        switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR,
-                                                         "re-subscribe with dialog detected, sql: %s\n", sql);
+                                                         "re-subscribe event %s, sql: %s\n", event, sql);
                }
                
                sofia_glue_execute_sql_now(profile, &sql, SWITCH_TRUE);
        } else {
+
+#if 0
                if (sofia_test_pflag(profile, PFLAG_MULTIREG)) {
                        sql = switch_mprintf("delete from sip_subscriptions where call_id='%q' "
                                                                 "or (proto='%q' and sip_user='%q' and sip_host='%q' "
@@ -2908,6 +2908,10 @@ void sofia_presence_handle_sip_i_subscribe(int status,
                                                                 "proto='%q' and sip_user='%q' and sip_host='%q' and sub_to_user='%q' and sub_to_host='%q' and event='%q' and hostname='%q'",
                                                                 proto, from_user, from_host, to_user, to_host, event, mod_sofia_globals.hostname);
                }
+#endif
+
+               sql = switch_mprintf("delete from sip_subscriptions where call_id='%q'", call_id, mod_sofia_globals.hostname);
+               
 
                switch_mutex_lock(profile->ireg_mutex);
                switch_assert(sql != NULL);
index 57807950e69b0cb139bd79da2d891f537f547a96..73a43414ab74987495eb97a1e54c09262fbd39f1 100644 (file)
@@ -1056,14 +1056,11 @@ uint8_t sofia_reg_handle_register(nua_t *nua, sofia_profile_t *profile, nua_hand
        switch_event_t *auth_params = NULL;
        int r = 0;
        long reg_count = 0;
-       int delete_subs;
        const char *agent = "unknown";
        const char *pres_on_reg = NULL;
        int send_pres = 0;
        int is_tls = 0, is_tcp = 0;
 
-       delete_subs = sofia_test_pflag(profile, PFLAG_DEL_SUBS_ON_REG);
-
        if (v_event && *v_event) pres_on_reg = switch_event_get_header(*v_event, "send-presence-on-register");
 
        if (!(send_pres = switch_true(pres_on_reg))) {
@@ -1504,16 +1501,6 @@ uint8_t sofia_reg_handle_register(nua_t *nua, sofia_profile_t *profile, nua_hand
                }
                if (auth_res != AUTH_RENEWED) {
                        if (multi_reg) {
-
-                               if (delete_subs) {
-                                       if (reg_count == 1) {
-                                               sql = switch_mprintf("update sip_subscriptions set expires=%ld where sip_user='%q' and sip_host='%q' and contact='%q'", 
-                                                               (long) switch_epoch_time_now(NULL), to_user, sub_host, contact_str);
-                                               sofia_glue_execute_sql_now(profile, &sql, SWITCH_TRUE);
-                                       }
-                               }
-
-
                                if (multi_reg_contact) {
                                        sql =
                                                switch_mprintf("delete from sip_registrations where sip_user='%q' and sip_host='%q' and contact='%q'", to_user, reg_host, contact_str);
@@ -1521,10 +1508,6 @@ uint8_t sofia_reg_handle_register(nua_t *nua, sofia_profile_t *profile, nua_hand
                                        sql = switch_mprintf("delete from sip_registrations where call_id='%q'", call_id);
                                }
                        } else {
-                               if (delete_subs) {
-                                       sql = switch_mprintf("delete from sip_subscriptions where sip_user='%q' and sip_host='%q'", to_user, sub_host);
-                                       sofia_glue_execute_sql_now(profile, &sql, SWITCH_TRUE);
-                               }
                                sql = switch_mprintf("delete from sip_registrations where sip_user='%q' and sip_host='%q'", to_user, reg_host);
                        }
                        switch_mutex_lock(profile->ireg_mutex);
@@ -1684,17 +1667,6 @@ uint8_t sofia_reg_handle_register(nua_t *nua, sofia_profile_t *profile, nua_hand
                        if ((p = strchr(icontact + 4, ':'))) {
                                *p = '\0';
                        }
-                       if (delete_subs) {
-                               if (multi_reg_contact) {
-                                       sql =
-                                               switch_mprintf("update sip_subscriptions set expires=%ld where sip_user='%q' and sip_host='%q' and contact='%q'", 
-                                                                          (long) switch_epoch_time_now(NULL), to_user, sub_host, contact_str);
-                               } else {
-                                       sql = switch_mprintf("update sip_subscriptions set expires=%ld where call_id='%q'", (long) switch_epoch_time_now(NULL), call_id);
-                               }
-
-                               sofia_glue_execute_sql_now(profile, &sql, SWITCH_TRUE);
-                       }
 
                        if (multi_reg_contact) {
                                sql =
@@ -1707,12 +1679,7 @@ uint8_t sofia_reg_handle_register(nua_t *nua, sofia_profile_t *profile, nua_hand
 
                        switch_safe_free(icontact);
                } else {
-                       if (delete_subs) {
-                               if ((sql = switch_mprintf("update sip_subscriptions set expires=%ld where sip_user='%q' and sip_host='%q'", 
-                                                                                 (long) switch_epoch_time_now(NULL), to_user, sub_host))) {
-                                       sofia_glue_execute_sql_now(profile, &sql, SWITCH_TRUE);
-                               }
-                       }
+
                        if ((sql = switch_mprintf("delete from sip_registrations where sip_user='%q' and sip_host='%q'", to_user, reg_host))) {
                                sofia_glue_execute_sql_now(profile, &sql, SWITCH_TRUE);
                        }