From d68605f5ae9b864156d02dc885cec28edfb7e72a Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Wed, 6 Jul 2011 15:11:19 -0500 Subject: [PATCH] FS-3394 --resolve edge case in the 3rd party sofia sip stack library when dealing with a malformed contact and missing ack. Will push upstream to sofia devs --- .../sofia-sip/libsofia-sip-ua/nua/nua_session.c | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) 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 *