diff --git a/contrib/src/pjproject/0001-android.patch b/contrib/src/pjproject/0001-android.patch
index 0e063cb97a1588ffb9b0a5101a2ec8542146b205..0b21f03d0c8ccaa736ee27af9a651bfd1e5cc675 100644
--- a/contrib/src/pjproject/0001-android.patch
+++ b/contrib/src/pjproject/0001-android.patch
@@ -11,10 +11,10 @@ Subject: [PATCH] android
  4 files changed, 12 insertions(+), 7 deletions(-)
 
 diff --git a/aconfigure b/aconfigure
-index 7fcb12ec4..066a1d0f4 100755
+index 51b01a2..2d606ba 100755
 --- a/aconfigure
 +++ b/aconfigure
-@@ -5954,9 +5954,6 @@ case $target in
+@@ -5958,9 +5958,6 @@ case $target in
  	esac
  	# UUID
  	case $target in
@@ -25,10 +25,10 @@ index 7fcb12ec4..066a1d0f4 100755
  		if test "$ac_has_uuid_lib" = "1" -a "$ac_has_uuid_h" = "1"; then
  			ac_os_objs="$ac_os_objs guid_uuid.o"
 diff --git a/aconfigure.ac b/aconfigure.ac
-index 0367679e2..0280f6894 100644
+index 954b815..f254a30 100644
 --- a/aconfigure.ac
 +++ b/aconfigure.ac
-@@ -489,9 +489,6 @@ case $target in
+@@ -492,9 +492,6 @@ case $target in
  	esac
  	# UUID
  	case $target in
@@ -39,13 +39,13 @@ index 0367679e2..0280f6894 100644
  		if test "$ac_has_uuid_lib" = "1" -a "$ac_has_uuid_h" = "1"; then
  			ac_os_objs="$ac_os_objs guid_uuid.o"
 diff --git a/pjlib/include/pj/config_site.h b/pjlib/include/pj/config_site.h
-index 47dd40ad5..f8cf75f80 100644
+index 7b8ea25..333dfc2 100644
 --- a/pjlib/include/pj/config_site.h
 +++ b/pjlib/include/pj/config_site.h
-@@ -21,3 +21,14 @@
- #define PJ_ICE_MAX_TURN                         4
- #define PJ_ICE_COMP_BITS                        2
- #define PJ_ICE_MAX_CHECKS                       1024
+@@ -24,3 +24,14 @@
+ /* Set permanent permissions on the TURN
+    server for all peer candidates */
+ #define PJ_ICE_ST_USE_TURN_PERMANENT_PERM       PJ_TRUE
 +
 +/*
 + * ANDROID settings.
@@ -57,8 +57,9 @@ index 47dd40ad5..f8cf75f80 100644
 +#undef  PJMEDIA_HAS_G722_CODEC
 +#define PJMEDIA_HAS_G722_CODEC                  1
 +#define PJMEDIA_VID_DEV_INFO_FMT_CNT            128
+\ No newline at end of file
 diff --git a/pjlib/src/pj/os_timestamp_posix.c b/pjlib/src/pj/os_timestamp_posix.c
-index 0aed8c470..1ec156b0d 100644
+index 0aed8c4..1ec156b 100644
 --- a/pjlib/src/pj/os_timestamp_posix.c
 +++ b/pjlib/src/pj/os_timestamp_posix.c
 @@ -203,7 +203,7 @@ PJ_DEF(pj_status_t) pj_get_timestamp_freq(pj_timestamp *freq)
@@ -70,6 +71,3 @@ index 0aed8c470..1ec156b0d 100644
  
  #include <errno.h>
  #include <time.h>
--- 
-2.24.1
-
diff --git a/contrib/src/pjproject/0001-win-config.patch b/contrib/src/pjproject/0001-win-config.patch
index 495d31fcfd873f29e3f032c98a2379d8d571dc14..279109e80225804ee756648ce19a26b52667bb1c 100644
--- a/contrib/src/pjproject/0001-win-config.patch
+++ b/contrib/src/pjproject/0001-win-config.patch
@@ -8,18 +8,17 @@ Subject: [PATCH 1/3] win config
  1 file changed, 5 insertions(+)
 
 diff --git a/pjlib/include/pj/config_site.h b/pjlib/include/pj/config_site.h
-index 47dd40ad5..5d4e3d10d 100644
+index 7b8ea25..85cf2ed 100644
 --- a/pjlib/include/pj/config_site.h
 +++ b/pjlib/include/pj/config_site.h
-@@ -21,3 +21,8 @@
- #define PJ_ICE_MAX_TURN                         4
- #define PJ_ICE_COMP_BITS                        2
- #define PJ_ICE_MAX_CHECKS                       1024
+@@ -24,3 +24,8 @@
+ /* Set permanent permissions on the TURN
+    server for all peer candidates */
+ #define PJ_ICE_ST_USE_TURN_PERMANENT_PERM       PJ_TRUE
 +
 +/*
 + * WINDOWS settings.
 + */
 +#define THIRD_PARTY_MEDIA                       0
 -- 
-2.24.1
-
+2.25.4
diff --git a/contrib/src/pjproject/0002-win-vs-gnutls.patch b/contrib/src/pjproject/0002-win-vs-gnutls.patch
index c2fccd54d4cb5716d1a87c209a14ef8718aba576..43760fa1307f5e5ad96b094881dcd9ca873172a9 100644
--- a/contrib/src/pjproject/0002-win-vs-gnutls.patch
+++ b/contrib/src/pjproject/0002-win-vs-gnutls.patch
@@ -10,7 +10,7 @@ Subject: [PATCH 2/3] win vs gnutls
  3 files changed, 21 insertions(+), 6 deletions(-)
 
 diff --git a/pjlib/build/pjlib.vcxproj b/pjlib/build/pjlib.vcxproj
-index f2d6fb42c..dee805a7c 100644
+index f2d6fb4..dee805a 100644
 --- a/pjlib/build/pjlib.vcxproj
 +++ b/pjlib/build/pjlib.vcxproj
 @@ -309,14 +309,17 @@
@@ -49,10 +49,10 @@ index f2d6fb42c..dee805a7c 100644
    <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug-Static|Win32'">
      <ClCompile>
 diff --git a/pjlib/include/pj/config_site.h b/pjlib/include/pj/config_site.h
-index 5d4e3d10d..a37d6d88c 100644
+index 85cf2ed..fe65725 100644
 --- a/pjlib/include/pj/config_site.h
 +++ b/pjlib/include/pj/config_site.h
-@@ -26,3 +26,6 @@
+@@ -29,3 +29,6 @@
   * WINDOWS settings.
   */
  #define THIRD_PARTY_MEDIA                       0
@@ -60,7 +60,7 @@ index 5d4e3d10d..a37d6d88c 100644
 +#define PJ_HAS_SSL_SOCK                         1
 +#define PJ_SSL_SOCK_IMP                         PJ_SSL_SOCK_IMP_GNUTLS
 diff --git a/pjmedia/build/pjmedia.vcxproj b/pjmedia/build/pjmedia.vcxproj
-index e596939d0..0c7108b83 100644
+index e596939..0c7108b 100644
 --- a/pjmedia/build/pjmedia.vcxproj
 +++ b/pjmedia/build/pjmedia.vcxproj
 @@ -307,14 +307,17 @@
@@ -99,5 +99,5 @@ index e596939d0..0c7108b83 100644
    <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
      <ClCompile>
 -- 
-2.24.1
+2.25.4
 
diff --git a/contrib/src/pjproject/0003-win-vs2017-props.patch b/contrib/src/pjproject/0003-win-vs2017-props.patch
index 6c306c3dddde534ae57c8f5669ce0ce1f72ec89c..c2a6d4439774ed558b0446de030325decec70090 100644
--- a/contrib/src/pjproject/0003-win-vs2017-props.patch
+++ b/contrib/src/pjproject/0003-win-vs2017-props.patch
@@ -5,11 +5,11 @@ Subject: [PATCH 3/3] win vs2017 props
 
 ---
  build/vs/pjproject-vs14-common-config.props   | 8 ++++----
- build/vs/pjproject-vs14-common-defaults.props | 4 ++--
- 2 files changed, 6 insertions(+), 6 deletions(-)
+ build/vs/pjproject-vs14-common-defaults.props | 2 +-
+ 2 files changed, 5 insertions(+), 5 deletions(-)
 
 diff --git a/build/vs/pjproject-vs14-common-config.props b/build/vs/pjproject-vs14-common-config.props
-index de8848ff5..6aa0276ba 100644
+index de8848f..6aa0276 100644
 --- a/build/vs/pjproject-vs14-common-config.props
 +++ b/build/vs/pjproject-vs14-common-config.props
 @@ -18,22 +18,22 @@
@@ -40,7 +40,7 @@ index de8848ff5..6aa0276ba 100644
          <AppTypeRev>10.0</AppTypeRev>
          
 diff --git a/build/vs/pjproject-vs14-common-defaults.props b/build/vs/pjproject-vs14-common-defaults.props
-index 526f6c925..198282b90 100644
+index 526f6c9..974447f 100644
 --- a/build/vs/pjproject-vs14-common-defaults.props
 +++ b/build/vs/pjproject-vs14-common-defaults.props
 @@ -3,7 +3,7 @@
@@ -52,13 +52,5 @@ index 526f6c925..198282b90 100644
    </PropertyGroup>
    <PropertyGroup>
      <_ProjectFileVersion>14.0.22823.1</_ProjectFileVersion>
-@@ -35,4 +35,4 @@
-       <Value>$(VSVer)</Value>
-     </BuildMacro>
-   </ItemGroup>
--</Project>
-\ No newline at end of file
-+</Project>
 -- 
-2.24.1
-
+2.25.4
diff --git a/contrib/src/pjproject/0009-add-config-site.patch b/contrib/src/pjproject/0009-add-config-site.patch
index 9891484d3cfdb51201efbfd6da964b8599c7a8e0..0264da506e1ffa43ff6ef28c86059bbdd740b287 100644
--- a/contrib/src/pjproject/0009-add-config-site.patch
+++ b/contrib/src/pjproject/0009-add-config-site.patch
@@ -13,7 +13,7 @@ new file mode 100644
 index 000000000..47dd40ad5
 --- /dev/null
 +++ b/pjlib/include/pj/config_site.h
-@@ -0,0 +1,23 @@
+@@ -0,0 +1,26 @@
 +#include "config_site_sample.h"
 +
 +/*
@@ -37,6 +37,9 @@ index 000000000..47dd40ad5
 +#define PJ_ICE_MAX_TURN                         4
 +#define PJ_ICE_COMP_BITS                        2
 +#define PJ_ICE_MAX_CHECKS                       1024
++/* Set permanent permissions on the TURN
++   server for all peer candidates */
++#define PJ_ICE_ST_USE_TURN_PERMANENT_PERM       PJ_TRUE
 -- 
 2.24.1
 
diff --git a/contrib/src/pjproject/0013-Assign-unique-local-preferences-for-candidates-with-.patch b/contrib/src/pjproject/0013-Assign-unique-local-preferences-for-candidates-with-.patch
new file mode 100644
index 0000000000000000000000000000000000000000..5976d132187834f392b8635cc8b26f4e77831da2
--- /dev/null
+++ b/contrib/src/pjproject/0013-Assign-unique-local-preferences-for-candidates-with-.patch
@@ -0,0 +1,85 @@
+From 0a13964065c2e4592eff07ec0880cb2af0a86ff9 Mon Sep 17 00:00:00 2001
+From: Nanang Izzuddin <nanang@teluu.com>
+Date: Fri, 7 Aug 2020 16:03:43 +0700
+Subject: [PATCH 1/3] - Assign unique local preferences for candidates with the
+ same type. - Update component's valid pair condition, instead of just higher
+ priority, also consider 'nominated' flag.
+
+---
+ pjnath/src/pjnath/ice_session.c | 18 +++++++++++++++++-
+ pjnath/src/pjnath/ice_strans.c  |  9 +++++----
+ 2 files changed, 22 insertions(+), 5 deletions(-)
+
+diff --git a/pjnath/src/pjnath/ice_session.c b/pjnath/src/pjnath/ice_session.c
+index 2a4125bc5..4eb5adea9 100644
+--- a/pjnath/src/pjnath/ice_session.c
++++ b/pjnath/src/pjnath/ice_session.c
+@@ -1297,7 +1297,23 @@ static void update_comp_check(pj_ice_sess *ice, unsigned comp_id,
+     if (comp->valid_check == NULL) {
+ 	comp->valid_check = check;
+     } else {
+-	if (CMP_CHECK_PRIO(comp->valid_check, check) < 0)
++	pj_bool_t update = PJ_FALSE;
++
++	/* Update component's valid check with conditions:
++	 * - it is the first nominated check, or
++	 * - it has higher prio, as long as nomination status is NOT degraded
++	 *   (existing is nominated -> new is not-nominated).
++	 */
++	if (!comp->nominated_check && check->nominated)
++	{
++	    update = PJ_TRUE;
++	} else if (CMP_CHECK_PRIO(comp->valid_check, check) < 0 &&
++		   (!comp->nominated_check || check->nominated))
++	{
++	    update = PJ_TRUE;
++	}
++
++	if (update)
+ 	    comp->valid_check = check;
+     }
+ 
+diff --git a/pjnath/src/pjnath/ice_strans.c b/pjnath/src/pjnath/ice_strans.c
+index 5481c59e1..54ae9f769 100644
+--- a/pjnath/src/pjnath/ice_strans.c
++++ b/pjnath/src/pjnath/ice_strans.c
+@@ -418,7 +418,7 @@ static pj_status_t add_update_turn(pj_ice_strans *ice_st,
+ 	cand = &comp->cand_list[comp->cand_cnt];
+ 	cand->type = PJ_ICE_CAND_TYPE_RELAYED;
+ 	cand->status = PJ_EPENDING;
+-	cand->local_pref = RELAY_PREF;
++	cand->local_pref = (pj_uint16_t)(RELAY_PREF - idx);
+ 	cand->transport_id = tp_id;
+ 	cand->comp_id = (pj_uint8_t) comp->comp_id;
+ 	new_cand = PJ_TRUE;
+@@ -480,7 +480,8 @@ static pj_bool_t ice_cand_equals(pj_ice_sess_cand *lcand,
+         || lcand->status != rcand->status
+         || lcand->comp_id != rcand->comp_id
+         || lcand->transport_id != rcand->transport_id
+-        || lcand->local_pref != rcand->local_pref
++	// local pref is no longer a constant, so it may be different
++        //|| lcand->local_pref != rcand->local_pref
+         || lcand->prio != rcand->prio
+         || pj_sockaddr_cmp(&lcand->addr, &rcand->addr) != 0
+         || pj_sockaddr_cmp(&lcand->base_addr, &rcand->base_addr) != 0)
+@@ -539,7 +540,7 @@ static pj_status_t add_stun_and_host(pj_ice_strans *ice_st,
+     cand = &comp->cand_list[comp->cand_cnt];
+     cand->type = PJ_ICE_CAND_TYPE_SRFLX;
+     cand->status = PJ_EPENDING;
+-    cand->local_pref = SRFLX_PREF;
++    cand->local_pref = (pj_uint16_t)(SRFLX_PREF - idx);
+     cand->transport_id = CREATE_TP_ID(TP_STUN, idx);
+     cand->comp_id = (pj_uint8_t) comp->comp_id;
+ 
+@@ -679,7 +680,7 @@ static pj_status_t add_stun_and_host(pj_ice_strans *ice_st,
+ 
+ 	    cand->type = PJ_ICE_CAND_TYPE_HOST;
+ 	    cand->status = PJ_SUCCESS;
+-	    cand->local_pref = HOST_PREF;
++	    cand->local_pref = (pj_uint16_t)(HOST_PREF - *cand_cnt);
+ 	    cand->transport_id = CREATE_TP_ID(TP_STUN, idx);
+ 	    cand->comp_id = (pj_uint8_t) comp->comp_id;
+ 	    pj_sockaddr_cp(&cand->addr, addr);
+-- 
+2.25.1
+
diff --git a/contrib/src/pjproject/0014-Add-new-compile-time-setting-PJ_ICE_ST_USE_TURN_PERM.patch b/contrib/src/pjproject/0014-Add-new-compile-time-setting-PJ_ICE_ST_USE_TURN_PERM.patch
new file mode 100644
index 0000000000000000000000000000000000000000..a82a4f74a6ccea9645d2c54f5bdee4e4f97deeaa
--- /dev/null
+++ b/contrib/src/pjproject/0014-Add-new-compile-time-setting-PJ_ICE_ST_USE_TURN_PERM.patch
@@ -0,0 +1,53 @@
+From afb1e188a9b1ee532634cabdd41937d0f21d97db Mon Sep 17 00:00:00 2001
+From: Nanang Izzuddin <nanang@teluu.com>
+Date: Fri, 7 Aug 2020 16:23:09 +0700
+Subject: [PATCH 2/3] Add new compile-time setting
+ PJ_ICE_ST_USE_TURN_PERMANENT_PERM, if set, TURN client session will
+ automatically renew permission for all remote candidates.
+
+---
+ pjnath/include/pjnath/config.h | 11 +++++++++++
+ pjnath/src/pjnath/ice_strans.c |  5 +++--
+ 2 files changed, 14 insertions(+), 2 deletions(-)
+
+diff --git a/pjnath/include/pjnath/config.h b/pjnath/include/pjnath/config.h
+index fc1e27550..bc2f4b158 100644
+--- a/pjnath/include/pjnath/config.h
++++ b/pjnath/include/pjnath/config.h
+@@ -457,6 +457,17 @@
+ #endif
+ 
+ 
++/**
++ * This constant specifies whether ICE stream transport should allow TURN
++ * client session to automatically renew permission for all remote candidates.
++ *
++ * Default: PJ_FALSE
++ */
++#ifndef PJ_ICE_ST_USE_TURN_PERMANENT_PERM
++#   define PJ_ICE_ST_USE_TURN_PERMANENT_PERM	    PJ_FALSE
++#endif
++
++
+ /** ICE session pool initial size. */
+ #ifndef PJNATH_POOL_LEN_ICE_SESS
+ #   define PJNATH_POOL_LEN_ICE_SESS		    512
+diff --git a/pjnath/src/pjnath/ice_strans.c b/pjnath/src/pjnath/ice_strans.c
+index 54ae9f769..5630b69e5 100644
+--- a/pjnath/src/pjnath/ice_strans.c
++++ b/pjnath/src/pjnath/ice_strans.c
+@@ -1504,8 +1504,9 @@ PJ_DEF(pj_status_t) pj_ice_strans_start_ice( pj_ice_strans *ice_st,
+ 	    }
+ 
+ 	    if (count && !comp->turn[n].err_cnt && comp->turn[n].sock) {
+-		status = pj_turn_sock_set_perm(comp->turn[n].sock, count,
+-					       addrs, 0);
++		status = pj_turn_sock_set_perm(
++				    comp->turn[n].sock, count,
++				    addrs, PJ_ICE_ST_USE_TURN_PERMANENT_PERM);
+ 		if (status != PJ_SUCCESS) {
+ 		    pj_ice_strans_stop_ice(ice_st);
+ 		    return status;
+-- 
+2.25.1
+
diff --git a/contrib/src/pjproject/0015-update-local-preference-for-peer-reflexive-candidate.patch b/contrib/src/pjproject/0015-update-local-preference-for-peer-reflexive-candidate.patch
new file mode 100644
index 0000000000000000000000000000000000000000..2fffca2b8b11d485f72d621479f8824a9a4f091f
--- /dev/null
+++ b/contrib/src/pjproject/0015-update-local-preference-for-peer-reflexive-candidate.patch
@@ -0,0 +1,137 @@
+From 9150099c0b45345cde9d738d7f0f344ade4788cc Mon Sep 17 00:00:00 2001
+From: nanangizz <nanang@teluu.com>
+Date: Tue, 11 Aug 2020 11:36:08 +0700
+Subject: [PATCH 3/3] - update local preference for peer reflexive candidate -
+ also update PRIORITY field value in performing connectivity check (must use
+ peer reflexive type and local pref must be unique, is this necessary?) - fix
+ local preference mask for non-standard ICE prio calculation
+
+---
+ pjnath/include/pjnath/ice_session.h |  5 +++++
+ pjnath/src/pjnath/ice_session.c     | 27 ++++++++++++++++++---------
+ pjnath/src/pjnath/ice_strans.c      |  6 +++---
+ 3 files changed, 26 insertions(+), 12 deletions(-)
+
+diff --git a/pjnath/include/pjnath/ice_session.h b/pjnath/include/pjnath/ice_session.h
+index 8971220f0..a889020f9 100644
+--- a/pjnath/include/pjnath/ice_session.h
++++ b/pjnath/include/pjnath/ice_session.h
+@@ -237,6 +237,11 @@ typedef struct pj_ice_msg_data
+  */
+ typedef struct pj_ice_sess_cand
+ {
++    /**
++     * The candidate ID.
++     */
++    unsigned		 id;
++
+     /**
+      * The candidate type, as described in #pj_ice_cand_type enumeration.
+      */
+diff --git a/pjnath/src/pjnath/ice_session.c b/pjnath/src/pjnath/ice_session.c
+index 4eb5adea9..b2cfc3ec2 100644
+--- a/pjnath/src/pjnath/ice_session.c
++++ b/pjnath/src/pjnath/ice_session.c
+@@ -686,9 +686,9 @@ static pj_uint32_t CALC_CAND_PRIO(pj_ice_sess *ice,
+ 	   (((256 - comp_id) & 0xFF) << 0);
+ #else
+     enum {
+-	type_mask   = ((2 << PJ_ICE_CAND_TYPE_PREF_BITS) - 1),
+-	local_mask  = ((2 << PJ_ICE_LOCAL_PREF_BITS) - 1),
+-	comp_mask   = ((2 << PJ_ICE_COMP_BITS) - 1),
++	type_mask   = ((1 << PJ_ICE_CAND_TYPE_PREF_BITS) - 1),
++	local_mask  = ((1 << PJ_ICE_LOCAL_PREF_BITS) - 1),
++	comp_mask   = ((1 << PJ_ICE_COMP_BITS) - 1),
+ 
+ 	comp_shift  = 0,
+ 	local_shift = (PJ_ICE_COMP_BITS),
+@@ -918,11 +918,13 @@ PJ_DEF(pj_status_t) pj_ice_sess_add_cand(pj_ice_sess *ice,
+     }
+ 
+     lcand = &ice->lcand[ice->lcand_cnt];
++    lcand->id = ice->lcand_cnt;
+     lcand->comp_id = (pj_uint8_t)comp_id;
+     lcand->transport_id = (pj_uint8_t)transport_id;
+     lcand->type = type;
+     lcand->transport = transport;
+     pj_strdup(ice->pool, &lcand->foundation, foundation);
++    lcand->local_pref = local_pref;
+     lcand->prio = CALC_CAND_PRIO(ice, type, local_pref, lcand->comp_id);
+     pj_sockaddr_cp(&lcand->addr, addr);
+     pj_sockaddr_cp(&lcand->base_addr, base_addr);
+@@ -950,7 +952,7 @@ PJ_DEF(pj_status_t) pj_ice_sess_add_cand(pj_ice_sess *ice,
+     LOG4((ice->obj_name, 
+ 	 "Candidate %d added: comp_id=%d, type=%s, foundation=%.*s, "
+ 	 "addr=%s:%d, base=%s:%d, prio=0x%x (%u)",
+-	 ice->lcand_cnt, 
++	 lcand->id,
+ 	 lcand->comp_id, 
+ 	 cand_type_names[lcand->type],
+ 	 (int)lcand->foundation.slen,
+@@ -962,7 +964,7 @@ PJ_DEF(pj_status_t) pj_ice_sess_add_cand(pj_ice_sess *ice,
+ 	 lcand->prio, lcand->prio));
+ 
+     if (p_cand_id)
+-	*p_cand_id = ice->lcand_cnt;
++	*p_cand_id = lcand->id;
+ 
+     ++ice->lcand_cnt;
+ 
+@@ -1692,7 +1694,7 @@ PJ_DEF(pj_status_t) pj_ice_sess_create_check_list(
+ 
+ 	pj_memcpy(cn, &rem_cand[i], sizeof(pj_ice_sess_cand));
+ 	pj_strdup(ice->pool, &cn->foundation, &rem_cand[i].foundation);
+-	ice->rcand_cnt++;
++	cn->id = ice->rcand_cnt++;
+     }
+ 
+     /* Generate checklist */
+@@ -1823,10 +1825,11 @@ static pj_status_t perform_check(pj_ice_sess *ice,
+ 
+     /* Add PRIORITY */
+ #if PJNATH_ICE_PRIO_STD
+-    prio = CALC_CAND_PRIO(ice, PJ_ICE_CAND_TYPE_PRFLX, 65535, 
++    prio = CALC_CAND_PRIO(ice, PJ_ICE_CAND_TYPE_PRFLX, 65535 - lcand->id,
+ 			  lcand->comp_id);
+ #else
+-    prio = CALC_CAND_PRIO(ice, PJ_ICE_CAND_TYPE_PRFLX, 0, 
++    prio = CALC_CAND_PRIO(ice, PJ_ICE_CAND_TYPE_PRFLX,
++			  ((1 << PJ_ICE_LOCAL_PREF_BITS) - 1) - lcand->id,
+ 			  lcand->comp_id);
+ #endif
+     pj_stun_msg_add_uint_attr(check->tdata->pool, check->tdata->msg, 
+@@ -2422,7 +2425,13 @@ static void on_stun_request_complete(pj_stun_session *stun_sess,
+ 	status = pj_ice_sess_add_cand(ice, check->lcand->comp_id, 
+ 				      msg_data->transport_id,
+ 				      PJ_ICE_CAND_TYPE_PRFLX,
+-				      65535, &foundation,
++#if PJNATH_ICE_PRIO_STD
++				      65535 - ice->lcand_cnt,
++#else
++				      ((1 << PJ_ICE_LOCAL_PREF_BITS) - 1) -
++				      ice->lcand_cnt,
++#endif
++				      &foundation,
+ 				      &xaddr->sockaddr, 
+ 				      &check->lcand->base_addr, 
+ 				      &check->lcand->base_addr,
+diff --git a/pjnath/src/pjnath/ice_strans.c b/pjnath/src/pjnath/ice_strans.c
+index 5630b69e5..2fc3c6c0c 100644
+--- a/pjnath/src/pjnath/ice_strans.c
++++ b/pjnath/src/pjnath/ice_strans.c
+@@ -64,9 +64,9 @@ enum tp_type
+ #   define HOST_PREF   65535
+ #   define RELAY_PREF  65535
+ #else
+-#   define SRFLX_PREF  0
+-#   define HOST_PREF   0
+-#   define RELAY_PREF  0
++#   define SRFLX_PREF  ((1 << PJ_ICE_LOCAL_PREF_BITS) - 1)
++#   define HOST_PREF   ((1 << PJ_ICE_LOCAL_PREF_BITS) - 1)
++#   define RELAY_PREF  ((1 << PJ_ICE_LOCAL_PREF_BITS) - 1)
+ #endif
+ 
+ 
+-- 
+2.25.1
+
diff --git a/contrib/src/pjproject/package.json b/contrib/src/pjproject/package.json
index 655cf12680d95de47e5be99958f586514054309a..c3433d1fc5f4eb8e043767afd04dd10f161ffea7 100644
--- a/contrib/src/pjproject/package.json
+++ b/contrib/src/pjproject/package.json
@@ -13,11 +13,14 @@
         "0007-pj_ice_sess.patch",
         "0008-fix_ioqueue_ipv6_sendto.patch",
         "0009-add-config-site.patch",
+        "0011-fix-tcp-death-detection.patch",
+        "0012-fix-turn-shutdown-crash.patch",
+        "0013-Assign-unique-local-preferences-for-candidates-with-.patch",
+        "0014-Add-new-compile-time-setting-PJ_ICE_ST_USE_TURN_PERM.patch",
+        "0015-update-local-preference-for-peer-reflexive-candidate.patch",
         "0001-win-config.patch",
         "0002-win-vs-gnutls.patch",
-        "0003-win-vs2017-props.patch",
-        "0011-fix-tcp-death-detection.patch",
-        "0012-fix-turn-shutdown-crash.patch"
+        "0003-win-vs2017-props.patch"
 ],
     "project_paths": [
         "pjlib-util/build/pjlib_util.vcxproj",
diff --git a/contrib/src/pjproject/rules.mak b/contrib/src/pjproject/rules.mak
index 878c07a6e665271caa68e07e84463e0148f0595c..103e666dacb796716ecadf302f55716f98c9e6d5 100644
--- a/contrib/src/pjproject/rules.mak
+++ b/contrib/src/pjproject/rules.mak
@@ -57,6 +57,9 @@ pjproject: pjproject-$(PJPROJECT_VERSION).tar.gz .sum-pjproject
 	$(APPLY) $(SRC)/pjproject/0010-fix-pkgconfig.patch
 	$(APPLY) $(SRC)/pjproject/0011-fix-tcp-death-detection.patch
 	$(APPLY) $(SRC)/pjproject/0012-fix-turn-shutdown-crash.patch
+	$(APPLY) $(SRC)/pjproject/0013-Assign-unique-local-preferences-for-candidates-with-.patch
+	$(APPLY) $(SRC)/pjproject/0014-Add-new-compile-time-setting-PJ_ICE_ST_USE_TURN_PERM.patch
+	$(APPLY) $(SRC)/pjproject/0015-update-local-preference-for-peer-reflexive-candidate.patch
 ifdef HAVE_ANDROID
 	$(APPLY) $(SRC)/pjproject/0001-android.patch
 endif