diff options
author | Benny Prijono <bennylp@teluu.com> | 2011-12-09 07:19:25 +0000 |
---|---|---|
committer | Benny Prijono <bennylp@teluu.com> | 2011-12-09 07:19:25 +0000 |
commit | 53f86de5d3872bcbe7e9d11b427a03f8dfb12695 (patch) | |
tree | 72174a9625a6329f838f133ff25932d306dac90e | |
parent | 2ead2b5de766b211c61b8dd4a3c1696850fc5a71 (diff) |
Fixed #1416: Allow application to send data after ICE negotiation fails
git-svn-id: http://svn.pjsip.org/repos/pjproject/branches/1.x@3906 74dad513-b988-da41-8d7b-12977e46ad98
-rw-r--r-- | pjmedia/src/pjmedia/transport_ice.c | 9 | ||||
-rw-r--r-- | pjnath/src/pjnath/ice_strans.c | 5 |
2 files changed, 11 insertions, 3 deletions
diff --git a/pjmedia/src/pjmedia/transport_ice.c b/pjmedia/src/pjmedia/transport_ice.c index 3e6db887..9b777501 100644 --- a/pjmedia/src/pjmedia/transport_ice.c +++ b/pjmedia/src/pjmedia/transport_ice.c @@ -402,7 +402,9 @@ static pj_status_t encode_session_in_sdp(struct transport_ice *tp_ice, * the session, in this case we will answer with full ICE SDP and * new ufrag/pwd pair. */ - if (!restart_session && pj_ice_strans_sess_is_complete(tp_ice->ice_st)) { + if (!restart_session && pj_ice_strans_sess_is_complete(tp_ice->ice_st) && + pj_ice_strans_get_state(tp_ice->ice_st) != PJ_ICE_STRANS_STATE_FAILED) + { const pj_ice_sess_check *check; char *attr_buf; pjmedia_sdp_conn *conn; @@ -532,7 +534,10 @@ static pj_status_t encode_session_in_sdp(struct transport_ice *tp_ice, pjmedia_sdp_attr_add(&m->attr_count, m->attr, attr); } - } else if (pj_ice_strans_has_sess(tp_ice->ice_st)) { + } else if (pj_ice_strans_has_sess(tp_ice->ice_st) && + pj_ice_strans_get_state(tp_ice->ice_st) != + PJ_ICE_STRANS_STATE_FAILED) + { /* Encode all candidates to SDP media */ char *attr_buf; unsigned comp; diff --git a/pjnath/src/pjnath/ice_strans.c b/pjnath/src/pjnath/ice_strans.c index f5acfdb6..d44e5a25 100644 --- a/pjnath/src/pjnath/ice_strans.c +++ b/pjnath/src/pjnath/ice_strans.c @@ -1163,8 +1163,11 @@ PJ_DEF(pj_status_t) pj_ice_strans_sendto( pj_ice_strans *ice_st, /* If ICE is available, send data with ICE, otherwise send with the * default candidate selected during initialization. + * + * https://trac.pjsip.org/repos/ticket/1416: + * Once ICE has failed, also send data with the default candidate. */ - if (ice_st->ice) { + if (ice_st->ice && ice_st->state < PJ_ICE_STRANS_STATE_FAILED) { if (comp->turn_sock) { pj_turn_sock_lock(comp->turn_sock); } |