Commit 7d35ea2986 for freeswitch.com
commit 7d35ea29865e67f04448be115a60d0a2c1b3e81a
Author: Gustavo Almeida <gustavo.abcdef@hotmail.com>
Date: Mon May 25 19:15:13 2026 +0100
[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);