]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
exclude rows with the current call_id - could be an endpoint updating it's
authorRupa Schomaker <rupa@rupa.com>
Thu, 4 Feb 2010 14:50:53 +0000 (14:50 +0000)
committerRupa Schomaker <rupa@rupa.com>
Thu, 4 Feb 2010 14:50:53 +0000 (14:50 +0000)
registration while we're at max_registrations

git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@16567 d0543943-73ff-0310-b7d9-9358b9ac24b2

src/mod/endpoints/mod_sofia/sofia_reg.c

index 4f2d78679267ac7ddb230c9af961f53935c713e5..52b5f46b5849c9fc2f08259200dbf99efa001883 100644 (file)
@@ -1701,6 +1701,7 @@ auth_res_t sofia_reg_parse_auth(sofia_profile_t *profile,
        const char *passwd = NULL;
        const char *a1_hash = NULL;
        const char *mwi_account = NULL;
+       const char *call_id = NULL;
        char *sql;
        char *number_alias = NULL;
        switch_xml_t domain, xml = NULL, user, param, uparams, dparams, group = NULL, gparams = NULL;
@@ -2118,8 +2119,11 @@ auth_res_t sofia_reg_parse_auth(sofia_profile_t *profile,
           /* if expires is null still process */
           /* expires == 0 means the phone is going to unregiser, so don't count against max */
                int count = 0;
-                               
-               sql = switch_mprintf("select count(sip_user) from sip_registrations where sip_user='%q'", username);
+
+               call_id = sip->sip_call_id->i_id;
+               switch_assert(call_id);
+               
+               sql = switch_mprintf("select count(sip_user) from sip_registrations where sip_user='%q' AND call_id <> '%q'", username, call_id);
                switch_assert(sql != NULL);
                sofia_glue_execute_sql_callback(profile, NULL, sql, sofia_reg_regcount_callback, &count);
                free(sql);