From: Gustavo Almeida Date: Mon, 25 May 2026 18:15:13 +0000 (+0100) Subject: [mod_sofia] Fix handling of sip-options-respond-503-on-busy profile parameter X-Git-Tag: v1.11.1^2~19 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=7d35ea29865e67f04448be115a60d0a2c1b3e81a;p=thirdparty%2Ffreeswitch.git [mod_sofia] Fix handling of sip-options-respond-503-on-busy profile parameter --- diff --git a/src/mod/endpoints/mod_sofia/sofia.c b/src/mod/endpoints/mod_sofia/sofia.c index 77e4750812..d2e94f16ce 100644 --- a/src/mod/endpoints/mod_sofia/sofia.c +++ b/src/mod/endpoints/mod_sofia/sofia.c @@ -2460,13 +2460,15 @@ 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()) { + int unavailable = (sess_count >= sess_max || !sofia_test_pflag(profile, PFLAG_RUNNING) || !switch_core_ready_inbound()); + int bypass = (event == nua_i_options && !sofia_test_pflag(profile, PFLAG_OPTIONS_RESPOND_503_ON_BUSY)); + + if (unavailable && !bypass) { 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);