From 7bafee1f91327f91c0372318cf0cd8e6dc4bceaa Mon Sep 17 00:00:00 2001 From: Razvan Crainea Date: Tue, 26 Sep 2023 16:29:22 +0300 Subject: [PATCH] dialog: increment last_gen_cseq only if initialized Many thanks to Denys Pozniak (@denyspozniak on GitHub) for reporting and providing troubleshooting information. Close #3206 --- modules/dialog/dlg_handlers.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/modules/dialog/dlg_handlers.c b/modules/dialog/dlg_handlers.c index f5f0e65192a..3970aa20f1c 100644 --- a/modules/dialog/dlg_handlers.c +++ b/modules/dialog/dlg_handlers.c @@ -1064,7 +1064,7 @@ static void dlg_update_caller_rpl_contact(struct cell* t, int type, LM_DBG("Status Code received = [%d]\n", statuscode); - if (statuscode == 401 || statuscode ==407) { + if ((statuscode == 401 || statuscode == 407) && dlg->legs[DLG_CALLER_LEG].last_gen_cseq) { dlg->legs[DLG_CALLER_LEG].last_gen_cseq++; LM_DBG("incrementing last_gen_cseq to [%d] for leg[%d]\n", dlg->legs[DLG_CALLER_LEG].last_gen_cseq, DLG_CALLER_LEG); } @@ -1100,6 +1100,11 @@ static void dlg_update_callee_rpl_contact(struct cell* t, int type, LM_DBG("Status Code received = [%d]\n", statuscode); + if ((statuscode == 401 || statuscode == 407) && dlg->legs[callee_idx(dlg)].last_gen_cseq) { + dlg->legs[callee_idx(dlg)].last_gen_cseq++; + LM_DBG("incrementing last_gen_cseq to [%d] for leg[%d]\n", dlg->legs[callee_idx(dlg)].last_gen_cseq, callee_idx(dlg)); + } + if (statuscode >= 200 && statuscode < 300) dlg_update_contact(dlg, rpl, callee_idx(dlg)); }