From b954f3b53b95bc4b2010c091e4b1b2e1f90a98ab Mon Sep 17 00:00:00 2001
From: Mohamed Chibani <mohamed.chibani@savoirfairelinux.com>
Date: Thu, 26 Aug 2021 11:03:16 -0400
Subject: [PATCH] ice: resort the check list when adding prflx candidates

Resort the check list  when new prflx candidates are discovered,
to avoid the nomination of candidates pairs with less priority.

Gitlab: #617

Change-Id: I93559facd8b6ce99708ccf1311925837d9cd119d
---
 ...resort-check-list-after-adding-prflx.patch | 31 +++++++++++++++++++
 contrib/src/pjproject/package.json            |  1 +
 contrib/src/pjproject/rules.mak               |  1 +
 3 files changed, 33 insertions(+)
 create mode 100644 contrib/src/pjproject/0019-resort-check-list-after-adding-prflx.patch

diff --git a/contrib/src/pjproject/0019-resort-check-list-after-adding-prflx.patch b/contrib/src/pjproject/0019-resort-check-list-after-adding-prflx.patch
new file mode 100644
index 0000000000..1849b4c201
--- /dev/null
+++ b/contrib/src/pjproject/0019-resort-check-list-after-adding-prflx.patch
@@ -0,0 +1,31 @@
+From 45430f86d00f60c439f936693bf033ff4c066329 Mon Sep 17 00:00:00 2001
+From: Mohamed Chibani <mohamed.chibani@savoirfairelinux.com>
+Date: Thu, 26 Aug 2021 10:49:20 -0400
+Subject: [PATCH] resort check list after adding prflx
+
+---
+ pjnath/src/pjnath/ice_session.c | 8 ++++++--
+ 1 file changed, 6 insertions(+), 2 deletions(-)
+
+diff --git a/pjnath/src/pjnath/ice_session.c b/pjnath/src/pjnath/ice_session.c
+index 77d014d62..f2c347163 100644
+--- a/pjnath/src/pjnath/ice_session.c
++++ b/pjnath/src/pjnath/ice_session.c
+@@ -4034,8 +4034,12 @@ static void handle_incoming_check(pj_ice_sess *ice,
+ 
+ 	    LOG5((ice->obj_name, "Performing triggered check for check %d",i));
+ 	    pj_log_push_indent();
+-	    perform_check(ice, &ice->clist, i, nominate);
+-	    pj_log_pop_indent();
++
++	    perform_check(ice, &ice->clist, i, nominate);
++	    /* Re-sort the list because of the newly added pair. */
++	    sort_checklist(ice, &ice->clist);
++
++	    pj_log_pop_indent();
+ 
+ 	} else if (c->state == PJ_ICE_SESS_CHECK_STATE_IN_PROGRESS) {
+ 	    /* Should retransmit immediately
+-- 
+2.25.1
+
diff --git a/contrib/src/pjproject/package.json b/contrib/src/pjproject/package.json
index 8314308d99..fbcbde925b 100644
--- a/contrib/src/pjproject/package.json
+++ b/contrib/src/pjproject/package.json
@@ -21,6 +21,7 @@
         "0015-fix-socktype-and-duplicate-checking.patch",
         "0017-auto-register-thread.patch",
         "0018-fix-ioqueue-lock-acquire.patch",
+        "0019-resort-check-list-after-adding-prflx.patch",
         "0001-win-config.patch",
         "0002-win-vs-gnutls.patch",
         "0003-win-vs2017-props.patch"
diff --git a/contrib/src/pjproject/rules.mak b/contrib/src/pjproject/rules.mak
index 0c6480f3f0..ae03233468 100644
--- a/contrib/src/pjproject/rules.mak
+++ b/contrib/src/pjproject/rules.mak
@@ -63,6 +63,7 @@ pjproject: pjproject-$(PJPROJECT_VERSION).tar.gz .sum-pjproject
 	$(APPLY) $(SRC)/pjproject/0015-fix-socktype-and-duplicate-checking.patch # TODO remove with 2.12 (https://github.com/pjsip/pjproject/commits/2feee8db77ed47e7b574367295d4f03f9aea67f8)
 	$(APPLY) $(SRC)/pjproject/0017-auto-register-thread.patch
 	$(APPLY) $(SRC)/pjproject/0018-fix-ioqueue-lock-acquire.patch
+	$(APPLY) $(SRC)/pjproject/0019-resort-check-list-after-adding-prflx.patch
 ifdef HAVE_ANDROID
 	$(APPLY) $(SRC)/pjproject/0001-android.patch
 endif
-- 
GitLab