]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
[mod_sofia] capture SIP reason header on INVITE failure (#3036)
authorDmitry Verenitsin <morbit85@gmail.com>
Tue, 26 May 2026 13:42:52 +0000 (18:42 +0500)
committerGitHub <noreply@github.com>
Tue, 26 May 2026 13:42:52 +0000 (16:42 +0300)
Co-authored-by: Chris Rienzo <chris@signalwire.com>
src/mod/endpoints/mod_sofia/sofia.c

index 7579c8c03ccf986b512d28baa3f8eab8c64f171a..62b4963e78528bd9a21e8ce019eee8ee94d8c9ca 100644 (file)
@@ -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);