From: Anthony Minessale Date: Thu, 27 Jan 2011 14:18:22 +0000 (-0600) Subject: FS-3012 X-Git-Tag: v1.2-rc1~172^2~27^2~10 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=008e527c0f5c86e20521c4ebacf69adcb269b08a;p=thirdparty%2Ffreeswitch.git FS-3012 --- diff --git a/src/mod/endpoints/mod_sofia/sofia.c b/src/mod/endpoints/mod_sofia/sofia.c index 643b3dd814..47f94b151a 100644 --- a/src/mod/endpoints/mod_sofia/sofia.c +++ b/src/mod/endpoints/mod_sofia/sofia.c @@ -808,6 +808,18 @@ void sofia_event_callback(nua_event_t event, } } + if ((event == nua_i_invite) && (!session)) { + uint32_t sess_count = switch_core_session_count(); + uint32_t sess_max = switch_core_session_limit(0); + + if (sess_count >= sess_max || !sofia_test_pflag(profile, PFLAG_RUNNING) || !switch_core_ready()) { + nua_respond(nh, 503, "Maximum Calls In Progress", SIPTAG_RETRY_AFTER_STR("300"), TAG_END()); + + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "No more sessions allowed at this time.\n"); + + goto done; + } + } if (sofia_test_pflag(profile, PFLAG_AUTH_ALL) && tech_pvt && tech_pvt->key && sip) { sip_authorization_t const *authorization = NULL;