diff options
Diffstat (limited to 'pjnath/src/pjnath/ice_strans.c')
-rw-r--r-- | pjnath/src/pjnath/ice_strans.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/pjnath/src/pjnath/ice_strans.c b/pjnath/src/pjnath/ice_strans.c index 5f7d59b6..d3ba78f4 100644 --- a/pjnath/src/pjnath/ice_strans.c +++ b/pjnath/src/pjnath/ice_strans.c @@ -461,14 +461,15 @@ static void on_read_complete(pj_ioqueue_key_t *key, if (status == PJ_SUCCESS) { if (ice_st->ice==NULL || - pj_memcmp(comp->pkt+8, comp->ka_tsx_id, 12) == 0) + (comp->stun_sess && + pj_memcmp(comp->pkt+8, comp->ka_tsx_id, 12) == 0)) { status = pj_stun_session_on_rx_pkt(comp->stun_sess, comp->pkt, bytes_read, PJ_STUN_IS_DATAGRAM, NULL, &comp->src_addr, comp->src_addr_len); - } else { + } else if (ice_st->ice) { PJ_TODO(DISTINGUISH_BETWEEN_LOCAL_AND_RELAY); TRACE_PKT((comp->ice_st->obj_name, @@ -481,6 +482,8 @@ static void on_read_complete(pj_ioqueue_key_t *key, comp->pkt, bytes_read, &comp->src_addr, comp->src_addr_len); + } else { + /* This must have been a very late STUN reponse */ } } else { (*ice_st->cb.on_rx_data)(ice_st, comp->comp_id, |