Commit bcd9d82630 for freeswitch.com

commit bcd9d8263013b8386556939284659be11c8a54b1
Author: Dmitry Verenitsin <morbit85@gmail.com>
Date:   Tue May 26 18:42:52 2026 +0500

    [mod_sofia] capture SIP reason header on INVITE failure (#3036)

    Co-authored-by: Chris Rienzo <chris@signalwire.com>

diff --git a/src/mod/endpoints/mod_sofia/sofia.c b/src/mod/endpoints/mod_sofia/sofia.c
index 7579c8c03c..62b4963e78 100644
--- a/src/mod/endpoints/mod_sofia/sofia.c
+++ b/src/mod/endpoints/mod_sofia/sofia.c
@@ -6645,12 +6645,19 @@ static void sofia_handle_sip_r_invite(switch_core_session_t *session, int status
 		}

 		if (status >= 400) {
+			char *reason_header = NULL;
 			char status_str[5];
 			switch_snprintf(status_str, sizeof(status_str), "%d", status);
 			switch_channel_set_variable(channel, "sip_invite_failure_status", status_str);
 			switch_channel_set_variable(channel, "sip_invite_failure_phrase", phrase);
 			switch_channel_set_variable_partner(channel, "sip_invite_failure_status", status_str);
 			switch_channel_set_variable_partner(channel, "sip_invite_failure_phrase", phrase);
+
+			reason_header = sip_header_as_string(nua_handle_get_home(nh), (void *) sip->sip_reason);
+			if (!zstr(reason_header)) {
+				switch_channel_set_variable(channel, "sip_reason", reason_header);
+				switch_channel_set_variable_partner(channel, "sip_reason", reason_header);
+			}
 		} else {
 			switch_channel_set_variable_partner(channel, "sip_invite_failure_status", NULL);
 			switch_channel_set_variable_partner(channel, "sip_invite_failure_phrase", NULL);