diff options
author | Benny Prijono <bennylp@teluu.com> | 2008-03-11 21:38:05 +0000 |
---|---|---|
committer | Benny Prijono <bennylp@teluu.com> | 2008-03-11 21:38:05 +0000 |
commit | 4e1d5dc0d96e099f12ea0127434b4f7029e95b2b (patch) | |
tree | 8471f75aefe77e864a4c9216f29ad04f2c8bf945 /pjsip/src/pjsua-lib/pjsua_call.c | |
parent | cedeaec6e1f22463dc1e13e3dee467fc4dcd4019 (diff) |
Ticket #479: allow media transport framework to return transport specific info (for example, to know whether SRTP is enabled)
git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@1860 74dad513-b988-da41-8d7b-12977e46ad98
Diffstat (limited to 'pjsip/src/pjsua-lib/pjsua_call.c')
-rw-r--r-- | pjsip/src/pjsua-lib/pjsua_call.c | 38 |
1 files changed, 32 insertions, 6 deletions
diff --git a/pjsip/src/pjsua-lib/pjsua_call.c b/pjsip/src/pjsua-lib/pjsua_call.c index 403a473a..6329732a 100644 --- a/pjsip/src/pjsua-lib/pjsua_call.c +++ b/pjsip/src/pjsua-lib/pjsua_call.c @@ -2200,6 +2200,7 @@ PJ_DEF(pj_status_t) pjsua_call_dump( pjsua_call_id call_id, char *p, *end; pj_status_t status; int len; + pjmedia_transport_info tp_info; PJ_ASSERT_RETURN(call_id>=0 && call_id<(int)pjsua_var.ua_cfg.max_calls, PJ_EINVAL); @@ -2258,6 +2259,31 @@ PJ_DEF(pj_status_t) pjsua_call_dump( pjsua_call_id call_id, *p = '\0'; } + /* Get SRTP status */ + pjmedia_transport_get_info(call->med_tp, &tp_info); + if (tp_info.specific_info_cnt > 0) { + int i; + for (i = 0; i < tp_info.specific_info_cnt; ++i) { + if (tp_info.spc_info[i].type == PJMEDIA_TRANSPORT_TYPE_SRTP) + { + pjmedia_srtp_info *srtp_info = + (pjmedia_srtp_info*) tp_info.spc_info[i].buffer; + + len = pj_ansi_snprintf(p, end-p, + "%s SRTP status: %s Crypto-suite: %s", + indent, + (srtp_info->active?"Active":"Not active"), + srtp_info->tx_policy.name.ptr); + if (len > 0 && len < end-p) { + p += len; + *p++ = '\n'; + *p = '\0'; + } + break; + } + } + } + /* Dump session statistics */ if (with_media && call->session) dump_media_session(indent, p, end-p, call->session); @@ -2442,11 +2468,11 @@ static void call_disconnect( pjsip_inv_session *inv, code==PJSIP_SC_NOT_ACCEPTABLE_HERE) { pjmedia_sdp_session *local_sdp; - pjmedia_sock_info si; + pjmedia_transport_info ti; - call->med_tp->op->get_info(call->med_tp, &si); + pjmedia_transport_get_info(call->med_tp, &ti); status = pjmedia_endpt_create_sdp(pjsua_var.med_endpt, tdata->pool, - 1, &si, &local_sdp); + 1, &ti.sock_info, &local_sdp); if (status == PJ_SUCCESS) { pjsip_create_sdp_body(tdata->pool, local_sdp, &tdata->msg->body); @@ -2551,15 +2577,15 @@ static pj_status_t create_inactive_sdp(pjsua_call *call, pj_status_t status; pjmedia_sdp_conn *conn; pjmedia_sdp_attr *attr; - pjmedia_sock_info skinfo; + pjmedia_transport_info tp_info; pjmedia_sdp_session *sdp; /* Get media socket info */ - pjmedia_transport_get_info(call->med_tp, &skinfo); + pjmedia_transport_get_info(call->med_tp, &tp_info); /* Create new offer */ status = pjmedia_endpt_create_sdp(pjsua_var.med_endpt, pjsua_var.pool, 1, - &skinfo, &sdp); + &tp_info.sock_info, &sdp); if (status != PJ_SUCCESS) { pjsua_perror(THIS_FILE, "Unable to create local SDP", status); return status; |