From: Rupa Schomaker Date: Thu, 4 Feb 2010 14:50:53 +0000 (+0000) Subject: exclude rows with the current call_id - could be an endpoint updating it's X-Git-Tag: v1.0.6~545 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=03009d648cda3057059c1c15fe3e20db98442038;p=thirdparty%2Ffreeswitch.git 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 --- 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);