From: Andrey Volk Date: Fri, 8 Oct 2021 17:24:43 +0000 (+0300) Subject: [mod_sofia] Destroy nua handles to avoid memory pool swell when system is unavailable... X-Git-Tag: v1.10.7^2~18 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=b7f908e8907a143bac52cbd2903c17a98e450d0c;p=thirdparty%2Ffreeswitch.git [mod_sofia] Destroy nua handles to avoid memory pool swell when system is unavailable (busy, paused or reached internal limits) --- diff --git a/src/mod/endpoints/mod_sofia/sofia.c b/src/mod/endpoints/mod_sofia/sofia.c index 36f3087db1..5066a13ef8 100644 --- a/src/mod/endpoints/mod_sofia/sofia.c +++ b/src/mod/endpoints/mod_sofia/sofia.c @@ -2462,17 +2462,20 @@ void sofia_event_callback(nua_event_t event, if (!sofia_private) { if (sess_count >= sess_max || !sofia_test_pflag(profile, PFLAG_RUNNING) || !switch_core_ready_inbound()) { nua_respond(nh, 503, "Maximum Calls In Progress", SIPTAG_RETRY_AFTER_STR("300"), NUTAG_WITH_THIS(nua), TAG_END()); + nua_handle_destroy(nh); goto end; } if (switch_queue_size(mod_sofia_globals.msg_queue) > (unsigned int)critical) { nua_respond(nh, 503, "System Busy", SIPTAG_RETRY_AFTER_STR("300"), NUTAG_WITH_THIS(nua), TAG_END()); + nua_handle_destroy(nh); goto end; } if (sofia_test_pflag(profile, PFLAG_STANDBY)) { nua_respond(nh, 503, "System Paused", NUTAG_WITH_THIS(nua), TAG_END()); + nua_handle_destroy(nh); goto end; } }