diff --git a/contrib/src/pjproject/0001-rfc6544.patch b/contrib/src/pjproject/0001-rfc6544.patch
index 945435316f2b9e5ced9621d9efe2909334fa5f39..52d20a76d5391593715e6c174f284b0a91603569 100644
--- a/contrib/src/pjproject/0001-rfc6544.patch
+++ b/contrib/src/pjproject/0001-rfc6544.patch
@@ -32,7 +32,7 @@ on behalf of Savoir-faire Linux.
  pjnath/src/pjnath/ice_strans.c          |  771 +++++++++++++---
  pjnath/src/pjnath/nat_detect.c          |    7 +-
  pjnath/src/pjnath/stun_session.c        |   15 +-
- pjnath/src/pjnath/stun_sock.c           | 1074 +++++++++++++++++++----
+ pjnath/src/pjnath/stun_sock.c           | 1075 +++++++++++++++++++----
  pjnath/src/pjnath/stun_transaction.c    |    3 +
  pjnath/src/pjnath/turn_session.c        |    3 +-
  pjnath/src/pjnath/turn_sock.c           |   24 +-
@@ -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, 2508 insertions(+), 402 deletions(-)
+ 21 files changed, 2509 insertions(+), 402 deletions(-)
 
 diff --git a/pjnath/include/pjnath/ice_session.h b/pjnath/include/pjnath/ice_session.h
 index 8971220f0..39c197c29 100644
@@ -1388,7 +1388,7 @@ index 2a4125bc5..d2eae9494 100644
  	}
      }
 diff --git a/pjnath/src/pjnath/ice_strans.c b/pjnath/src/pjnath/ice_strans.c
-index 3cb350c2a..dee666e2a 100644
+index 3cb350c2a..69df9f40a 100644
 --- a/pjnath/src/pjnath/ice_strans.c
 +++ b/pjnath/src/pjnath/ice_strans.c
 @@ -69,6 +69,7 @@ enum tp_type
@@ -2407,7 +2407,7 @@ index 3cb350c2a..dee666e2a 100644
 +		    comp->ice_st->rx_wanted_size)
 +		{
 +		    /* a single packet left to process */
-+		    if (comp->ice_st->rx_buffer_size == 1) {
++		    if (comp->ice_st->rx_buffer_size == 1 && comp->ice_st->rx_wanted_size == 0) {
 +			/* get last frame's lenght from its header */
 +			leftover = GETVAL16H(comp->ice_st->rx_buffer,
 +					     current_packet);
@@ -2560,7 +2560,7 @@ index f2b4f7058..ed17b904f 100644
 +    return sess ? sess->conn_type : PJ_STUN_TP_UDP;
 +}
 diff --git a/pjnath/src/pjnath/stun_sock.c b/pjnath/src/pjnath/stun_sock.c
-index 5fe825cf5..c4519f82e 100644
+index 5fe825cf5..c4cd9b224 100644
 --- a/pjnath/src/pjnath/stun_sock.c
 +++ b/pjnath/src/pjnath/stun_sock.c
 @@ -40,6 +40,36 @@
@@ -3093,7 +3093,7 @@ index 5fe825cf5..c4519f82e 100644
  
      /* Associate us with the STUN session */
      pj_stun_session_set_user_data(stun_sock->stun_sess, stun_sock);
-@@ -369,25 +551,304 @@ PJ_DEF(pj_status_t) pj_stun_sock_create( pj_stun_config *stun_cfg,
+@@ -369,25 +551,305 @@ PJ_DEF(pj_status_t) pj_stun_sock_create( pj_stun_config *stun_cfg,
       * STUN messages we sent with STUN messages that the application sends.
       * The last 16bit value in the array is a counter.
       */
@@ -3181,7 +3181,8 @@ index 5fe825cf5..c4519f82e 100644
 +	    /* RFC6544, the packet is wrapped into a packet following the RFC4571 */
 +	    pj_bool_t store_remaining = PJ_TRUE;
 +	    if (buf->rx_buffer_size != 0 || buf->rx_wanted_size != 0) {
-+		if (buf->rx_buffer_size == 1) {
++		if (buf->rx_buffer_size == 1 && buf->rx_wanted_size == 0) {
++		    // In this case, we want to know the header size
 +		    leftover = GETVAL16H(buf->rx_buffer, current_packet);
 +
 +		    buf->rx_buffer_size = 0;
@@ -3405,7 +3406,7 @@ index 5fe825cf5..c4519f82e 100644
  /* Start socket. */
  PJ_DEF(pj_status_t) pj_stun_sock_start( pj_stun_sock *stun_sock,
  				        const pj_str_t *domain,
-@@ -526,6 +987,26 @@ PJ_DEF(pj_status_t) pj_stun_sock_destroy(pj_stun_sock *stun_sock)
+@@ -526,6 +988,26 @@ PJ_DEF(pj_status_t) pj_stun_sock_destroy(pj_stun_sock *stun_sock)
  	stun_sock->sock_fd = PJ_INVALID_SOCKET;
      }
  
@@ -3432,7 +3433,7 @@ index 5fe825cf5..c4519f82e 100644
      if (stun_sock->stun_sess) {
  	pj_stun_session_destroy(stun_sock->stun_sess);
      }
-@@ -634,10 +1115,12 @@ static pj_status_t get_mapped_addr(pj_stun_sock *stun_sock)
+@@ -634,10 +1116,12 @@ static pj_status_t get_mapped_addr(pj_stun_sock *stun_sock)
      
      /* Send request */
      status=pj_stun_session_send_msg(stun_sock->stun_sess, INTERNAL_MSG_TOKEN,
@@ -3447,7 +3448,7 @@ index 5fe825cf5..c4519f82e 100644
  	goto on_error;
  
      return PJ_SUCCESS;
-@@ -658,6 +1141,8 @@ PJ_DEF(pj_status_t) pj_stun_sock_get_info( pj_stun_sock *stun_sock,
+@@ -658,6 +1142,8 @@ PJ_DEF(pj_status_t) pj_stun_sock_get_info( pj_stun_sock *stun_sock,
  
      pj_grp_lock_acquire(stun_sock->grp_lock);
  
@@ -3456,7 +3457,7 @@ index 5fe825cf5..c4519f82e 100644
      /* Copy STUN server address and mapped address */
      pj_memcpy(&info->srv_addr, &stun_sock->srv_addr,
  	      sizeof(pj_sockaddr));
-@@ -770,13 +1255,241 @@ PJ_DEF(pj_status_t) pj_stun_sock_sendto( pj_stun_sock *stun_sock,
+@@ -770,13 +1256,241 @@ PJ_DEF(pj_status_t) pj_stun_sock_sendto( pj_stun_sock *stun_sock,
  	send_key = &stun_sock->send_key;
  
      size = pkt_len;
@@ -3700,7 +3701,7 @@ index 5fe825cf5..c4519f82e 100644
  /* This callback is called by the STUN session to send packet */
  static pj_status_t sess_on_send_msg(pj_stun_session *sess,
  				    void *token,
-@@ -787,6 +1500,7 @@ static pj_status_t sess_on_send_msg(pj_stun_session *sess,
+@@ -787,6 +1501,7 @@ static pj_status_t sess_on_send_msg(pj_stun_session *sess,
  {
      pj_stun_sock *stun_sock;
      pj_ssize_t size;
@@ -3708,7 +3709,7 @@ index 5fe825cf5..c4519f82e 100644
  
      stun_sock = (pj_stun_sock *) pj_stun_session_get_user_data(sess);
      if (!stun_sock || !stun_sock->active_sock) {
-@@ -800,9 +1514,29 @@ static pj_status_t sess_on_send_msg(pj_stun_session *sess,
+@@ -800,9 +1515,29 @@ static pj_status_t sess_on_send_msg(pj_stun_session *sess,
      PJ_UNUSED_ARG(token);
  
      size = pkt_size;
@@ -3741,7 +3742,7 @@ index 5fe825cf5..c4519f82e 100644
  }
  
  /* This callback is called by the STUN session when outgoing transaction 
-@@ -942,8 +1676,6 @@ static pj_bool_t on_data_recvfrom(pj_activesock_t *asock,
+@@ -942,8 +1677,6 @@ static pj_bool_t on_data_recvfrom(pj_activesock_t *asock,
  				  pj_status_t status)
  {
      pj_stun_sock *stun_sock;
@@ -3750,7 +3751,7 @@ index 5fe825cf5..c4519f82e 100644
  
      stun_sock = (pj_stun_sock*) pj_activesock_get_user_data(asock);
      if (!stun_sock)
-@@ -955,58 +1687,7 @@ static pj_bool_t on_data_recvfrom(pj_activesock_t *asock,
+@@ -955,58 +1688,7 @@ static pj_bool_t on_data_recvfrom(pj_activesock_t *asock,
  	return PJ_TRUE;
      }
  
@@ -3810,7 +3811,7 @@ index 5fe825cf5..c4519f82e 100644
  }
  
  /* Callback from active socket about send status */
-@@ -1047,3 +1728,8 @@ static pj_bool_t on_data_sent(pj_activesock_t *asock,
+@@ -1047,3 +1729,8 @@ static pj_bool_t on_data_sent(pj_activesock_t *asock,
      return PJ_TRUE;
  }
  
@@ -4157,4 +4158,5 @@ index 474a8d07c..9257f07a4 100644
  	if (status != PJ_SUCCESS) {
  	    char errmsg[PJ_ERR_MSG_SIZE];
 -- 
-2.25.2
\ No newline at end of file
+2.25.2
+