summaryrefslogtreecommitdiff
path: root/pjmedia/src
diff options
context:
space:
mode:
authorBenny Prijono <bennylp@teluu.com>2009-10-14 13:13:18 +0000
committerBenny Prijono <bennylp@teluu.com>2009-10-14 13:13:18 +0000
commit4533e1452749d9c4060d63971eabc7a6baeb9e1e (patch)
treeb12b132dd8af76ba68df84a2ba3d45b60824578a /pjmedia/src
parent6bdbb51b9b880efd0f2f9d833189bdfc8e469934 (diff)
Ticket #881: send UPDATE or re-INVITE after ICE negotiation, if the default candidate has changed
- done - added pj_ice_strans_state (to be used for informational purposes for now) - added pjmedia ICE transport specific info, and display it in call dump output - misc fixes (changed pjmedia_transport_info.spec_info_cnt from int to unsigned) git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@2945 74dad513-b988-da41-8d7b-12977e46ad98
Diffstat (limited to 'pjmedia/src')
-rw-r--r--pjmedia/src/pjmedia/transport_ice.c32
1 files changed, 32 insertions, 0 deletions
diff --git a/pjmedia/src/pjmedia/transport_ice.c b/pjmedia/src/pjmedia/transport_ice.c
index 7c36787c..7fd0133e 100644
--- a/pjmedia/src/pjmedia/transport_ice.c
+++ b/pjmedia/src/pjmedia/transport_ice.c
@@ -1473,6 +1473,38 @@ static pj_status_t transport_get_info(pjmedia_transport *tp,
info->src_rtcp_name = tp_ice->rtcp_src_addr;
}
+ /* Fill up transport specific info */
+ if (info->specific_info_cnt < PJ_ARRAY_SIZE(info->spc_info)) {
+ pjmedia_transport_specific_info *tsi;
+ pjmedia_ice_transport_info *ii;
+ unsigned i;
+
+ pj_assert(sizeof(*ii) <= sizeof(tsi->buffer));
+ tsi = &info->spc_info[info->specific_info_cnt++];
+ tsi->type = PJMEDIA_TRANSPORT_TYPE_ICE;
+ tsi->cbsize = sizeof(*ii);
+
+ ii = (pjmedia_ice_transport_info*) tsi->buffer;
+ pj_bzero(ii, sizeof(*ii));
+
+ if (pj_ice_strans_has_sess(tp_ice->ice_st))
+ ii->role = pj_ice_strans_get_role(tp_ice->ice_st);
+ else
+ ii->role = PJ_ICE_SESS_ROLE_UNKNOWN;
+ ii->sess_state = pj_ice_strans_get_state(tp_ice->ice_st);
+ ii->comp_cnt = pj_ice_strans_get_running_comp_cnt(tp_ice->ice_st);
+
+ for (i=1; i<=ii->comp_cnt && i<=PJ_ARRAY_SIZE(ii->comp); ++i) {
+ const pj_ice_sess_check *chk;
+
+ chk = pj_ice_strans_get_valid_pair(tp_ice->ice_st, i);
+ if (chk) {
+ ii->comp[i-1].lcand_type = chk->lcand->type;
+ ii->comp[i-1].rcand_type = chk->rcand->type;
+ }
+ }
+ }
+
return PJ_SUCCESS;
}