diff --git a/contrib/src/pjproject/0001-rfc6544.patch b/contrib/src/pjproject/0001-rfc6544.patch
index 2f8f5feb5534484392c42606e68002a7e7daae57..f58262379fac1e10b7099c69594f6e50ebda816a 100644
--- a/contrib/src/pjproject/0001-rfc6544.patch
+++ b/contrib/src/pjproject/0001-rfc6544.patch
@@ -29,7 +29,7 @@ on behalf of Savoir-faire Linux.
  pjnath/src/pjnath-test/sess_auth.c      |   14 +-
  pjnath/src/pjnath-test/stun_sock_test.c |    7 +-
  pjnath/src/pjnath/ice_session.c         |  505 +++++++++--
- pjnath/src/pjnath/ice_strans.c          |  745 +++++++++++++---
+ pjnath/src/pjnath/ice_strans.c          |  743 +++++++++++++---
  pjnath/src/pjnath/nat_detect.c          |    7 +-
  pjnath/src/pjnath/stun_session.c        |   15 +-
  pjnath/src/pjnath/stun_sock.c           | 1082 +++++++++++++++++++----
@@ -41,7 +41,7 @@ on behalf of Savoir-faire Linux.
  pjnath/src/pjturn-srv/server.c          |    2 +-
  pjsip-apps/src/samples/icedemo.c        |  116 ++-
  pjsip/src/pjsua-lib/pjsua_core.c        |    2 +-
- 21 files changed, 2451 insertions(+), 409 deletions(-)
+ 21 files changed, 2449 insertions(+), 409 deletions(-)
 
 diff --git a/pjnath/include/pjnath/ice_session.h b/pjnath/include/pjnath/ice_session.h
 index 8971220f0..4cccd7c64 100644
@@ -1377,7 +1377,7 @@ index 2a4125bc5..35cb08c07 100644
  	}
      }
 diff --git a/pjnath/src/pjnath/ice_strans.c b/pjnath/src/pjnath/ice_strans.c
-index 3cb350c2a..d29c1f0db 100644
+index 3cb350c2a..82175e9e8 100644
 --- a/pjnath/src/pjnath/ice_strans.c
 +++ b/pjnath/src/pjnath/ice_strans.c
 @@ -69,6 +69,7 @@ enum tp_type
@@ -2071,7 +2071,7 @@ index 3cb350c2a..d29c1f0db 100644
      if (ice_st->num_buf > 0 && ice_st->buf_idx != ice_st->empty_idx) {
  	/* There's some pending send. Send it one by one. */
          pending_send *ps = &ice_st->send_buf[ice_st->buf_idx];
-@@ -2031,6 +2216,214 @@ static void check_pending_send(pj_ice_strans *ice_st)
+@@ -2031,6 +2216,212 @@ static void check_pending_send(pj_ice_strans *ice_st)
      }
  }
  
@@ -2102,7 +2102,6 @@ index 3cb350c2a..d29c1f0db 100644
 +    if (!ice_st || !ice_st->ice)
 +        return;
 +
-+    ice_st->is_pending = PJ_FALSE;
 +    ice_sess_on_peer_connection(ice_st->ice,
 +                                data->transport_id, status, remote_addr);
 +}
@@ -2275,7 +2274,6 @@ index 3cb350c2a..d29c1f0db 100644
 +
 +    if (idx != -1 && st_comp->stun[idx].sock) {
 +        const pj_ice_sess_cand *rcand = check->rcand;
-+        ice_st->is_pending = PJ_FALSE;
 +        return pj_stun_sock_close(st_comp->stun[idx].sock, &rcand->addr);
 +    }
 +
@@ -2286,7 +2284,7 @@ index 3cb350c2a..d29c1f0db 100644
  /* Notifification when asynchronous send operation via STUN/TURN
   * has completed.
   */
-@@ -2039,7 +2432,8 @@ static pj_bool_t on_data_sent(pj_ice_strans *ice_st, pj_ssize_t sent)
+@@ -2039,7 +2430,8 @@ static pj_bool_t on_data_sent(pj_ice_strans *ice_st, pj_ssize_t sent)
      if (ice_st->destroy_req || !ice_st->is_pending)
  	return PJ_TRUE;
  
@@ -2296,7 +2294,7 @@ index 3cb350c2a..d29c1f0db 100644
  	(*ice_st->cb.on_data_sent)(ice_st, sent);
      }
  
-@@ -2196,7 +2590,7 @@ static pj_bool_t stun_on_status(pj_stun_sock *stun_sock,
+@@ -2196,7 +2588,7 @@ static pj_bool_t stun_on_status(pj_stun_sock *stun_sock,
  		{
  		    /* We get an IPv4 mapped address for our IPv6
  		     * host address.
@@ -2305,7 +2303,7 @@ index 3cb350c2a..d29c1f0db 100644
  		    comp->ipv4_mapped = PJ_TRUE;
  
  		    /* Find other host candidates with the same (IPv6)
-@@ -2208,7 +2602,7 @@ static pj_bool_t stun_on_status(pj_stun_sock *stun_sock,
+@@ -2208,7 +2600,7 @@ static pj_bool_t stun_on_status(pj_stun_sock *stun_sock,
  
  		        if (comp->cand_list[i].type != PJ_ICE_CAND_TYPE_HOST)
  		            continue;
@@ -2314,7 +2312,7 @@ index 3cb350c2a..d29c1f0db 100644
  		        a1 = &comp->cand_list[i].addr;
  		        a2 = &cand->base_addr;
  		        if (pj_memcmp(pj_sockaddr_get_addr(a1),
-@@ -2225,7 +2619,7 @@ static pj_bool_t stun_on_status(pj_stun_sock *stun_sock,
+@@ -2225,7 +2617,7 @@ static pj_bool_t stun_on_status(pj_stun_sock *stun_sock,
  		    pj_sockaddr_cp(&cand->base_addr, &info.mapped_addr);
  		    pj_sockaddr_cp(&cand->rel_addr, &info.mapped_addr);
  		}
@@ -2323,7 +2321,7 @@ index 3cb350c2a..d29c1f0db 100644
  		/* Eliminate the srflx candidate if the address is
  		 * equal to other (host) candidates.
  		 */
-@@ -2268,11 +2662,11 @@ static pj_bool_t stun_on_status(pj_stun_sock *stun_sock,
+@@ -2268,11 +2660,11 @@ static pj_bool_t stun_on_status(pj_stun_sock *stun_sock,
  					     sizeof(ipaddr), 3)));
  
  		sess_init_update(ice_st);
@@ -2337,7 +2335,7 @@ index 3cb350c2a..d29c1f0db 100644
  		    				  PJ_ICE_STRANS_OP_ADDR_CHANGE,
  		    				  status);
  		}
-@@ -2318,6 +2712,10 @@ static pj_bool_t stun_on_status(pj_stun_sock *stun_sock,
+@@ -2318,6 +2710,10 @@ static pj_bool_t stun_on_status(pj_stun_sock *stun_sock,
  	    }
  	}
  	break;
@@ -2348,7 +2346,7 @@ index 3cb350c2a..d29c1f0db 100644
      }
  
      return pj_grp_lock_dec_ref(ice_st->grp_lock)? PJ_FALSE : PJ_TRUE;
-@@ -2358,14 +2756,103 @@ static void turn_on_rx_data(pj_turn_sock *turn_sock,
+@@ -2358,14 +2754,103 @@ static void turn_on_rx_data(pj_turn_sock *turn_sock,
      } else {
  
  	/* Hand over the packet to ICE */