diff --git a/libs/sofia-sip/libsofia-sip-ua/nua/nua_session.c b/libs/sofia-sip/libsofia-sip-ua/nua/nua_session.c index a35669dd3b..bc80310f23 100644 --- a/libs/sofia-sip/libsofia-sip-ua/nua/nua_session.c +++ b/libs/sofia-sip/libsofia-sip-ua/nua/nua_session.c @@ -3721,6 +3721,9 @@ static int nua_bye_client_init(nua_client_request_t *cr, static int nua_bye_client_request(nua_client_request_t *cr, msg_t *msg, sip_t *sip, tagi_t const *tags); +static int nua_bye_client_response(nua_client_request_t *cr, + int status, char const *phrase, + sip_t const *sip); static int nua_bye_client_report(nua_client_request_t *cr, int status, char const *phrase, sip_t const *sip, @@ -3739,7 +3742,7 @@ nua_client_methods_t const nua_bye_client_methods = { nua_bye_client_init, /* crm_init */ nua_bye_client_request, /* crm_send */ NULL, /* crm_check_restart */ - NULL, /* crm_recv */ + nua_bye_client_response, /* crm_recv */ NULL, /* crm_preliminary */ nua_bye_client_report, /* crm_report */ NULL, /* crm_complete */ @@ -3818,6 +3821,18 @@ static int nua_bye_client_request(nua_client_request_t *cr, return error; } +static int nua_bye_client_response(nua_client_request_t *cr, + int status, char const *phrase, + sip_t const *sip) { + + nua_dialog_usage_t *du = cr->cr_usage; + nua_session_usage_t *ss = nua_dialog_usage_private(du); + + if (ss && ss->ss_reporting && status >= 900) + return 1; + + return nua_base_client_response(cr, status, phrase, sip, NULL); +} /** @NUA_EVENT nua_r_bye *