From 03009d648cda3057059c1c15fe3e20db98442038 Mon Sep 17 00:00:00 2001 From: Rupa Schomaker Date: Thu, 4 Feb 2010 14:50:53 +0000 Subject: [PATCH] exclude rows with the current call_id - could be an endpoint updating it's 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 | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/mod/endpoints/mod_sofia/sofia_reg.c b/src/mod/endpoints/mod_sofia/sofia_reg.c index 4f2d786792..52b5f46b58 100644 --- a/src/mod/endpoints/mod_sofia/sofia_reg.c +++ b/src/mod/endpoints/mod_sofia/sofia_reg.c @@ -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);