From bcd9d8263013b8386556939284659be11c8a54b1 Mon Sep 17 00:00:00 2001 From: Dmitry Verenitsin Date: Tue, 26 May 2026 18:42:52 +0500 Subject: [PATCH] [mod_sofia] capture SIP reason header on INVITE failure (#3036) Co-authored-by: Chris Rienzo --- src/mod/endpoints/mod_sofia/sofia.c | 7 +++++++ 1 file changed, 7 insertions(+) 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);