]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
centralized registration:
authorMathieu Parent <math.parent@gmail.com>
Tue, 22 Feb 2011 23:56:00 +0000 (00:56 +0100)
committerMathieu Parent <math.parent@gmail.com>
Wed, 23 Feb 2011 00:07:53 +0000 (01:07 +0100)
- allow infinite registrations (expire=0)
- when removing a registration, keep the other with same user if multiple reg is allowed

src/switch_core_sqldb.c

index 1274213893fdd560e0239e2774843f9768b65ad4..2a6f9e3bf2b4fc4a13aad897109bb5a786771843 100644 (file)
@@ -1696,7 +1696,11 @@ SWITCH_DECLARE(switch_status_t) switch_core_del_registration(const char *user, c
                return SWITCH_STATUS_FALSE;
        }
 
-       sql = switch_mprintf("delete from registrations where reg_user='%q' and realm='%q' and hostname='%q'", user, realm, switch_core_get_hostname());
+       if (!zstr(token) && runtime.multiple_registrations) {
+               sql = switch_mprintf("delete from registrations where reg_user='%q' and realm='%q' and hostname='%q' and token='%q'", user, realm, switch_core_get_hostname(), token);
+       } else {
+               sql = switch_mprintf("delete from registrations where reg_user='%q' and realm='%q' and hostname='%q'", user, realm, switch_core_get_hostname());
+       }
 
        switch_cache_db_execute_sql(dbh, sql, NULL);
        switch_cache_db_release_db_handle(&dbh);
@@ -1723,7 +1727,7 @@ SWITCH_DECLARE(switch_status_t) switch_core_expire_registration(int force)
        if (force) {
                sql = switch_mprintf("delete from registrations where hostname='%q'", switch_core_get_hostname());
        } else {
-               sql = switch_mprintf("delete from registrations where expires <= %ld and hostname='%q'", now, switch_core_get_hostname());
+               sql = switch_mprintf("delete from registrations where expires > 0 and expires <= %ld and hostname='%q'", now, switch_core_get_hostname());
        }
 
        switch_cache_db_execute_sql(dbh, sql, NULL);