Changeset 2291


Ignore:
Timestamp:
Sep 17, 2008 3:32:06 PM (11 years ago)
Author:
nanang
Message:

Ticket #631:

  • Added new fields in media transport info: remote address originating RTP & RTCP.
  • Updated transport UDP & ICE to fill above fields in getting transport info.
  • Updated pjsua call dump, instead of showing remote RTP address from SDP, it will show address of RTP originator.
Location:
pjproject/trunk
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • pjproject/trunk/pjmedia/include/pjmedia/transport.h

    r2262 r2291  
    492492     */ 
    493493    pjmedia_sock_info sock_info; 
     494 
     495    /** 
     496     * Remote address where RTP/RTCP originated from. 
     497     */ 
     498    pj_sockaddr     rem_rtp_name; 
     499    pj_sockaddr     rem_rtcp_name; 
    494500 
    495501    /** 
  • pjproject/trunk/pjmedia/src/pjmedia/transport_ice.c

    r2276 r2291  
    14251425    } 
    14261426 
     1427    /* Get remote address originating RTP & RTCP. */ 
     1428    info->rem_rtp_name  = tp_ice->rtp_src_addr; 
     1429    info->rem_rtcp_name = tp_ice->rtcp_src_addr; 
     1430 
    14271431    return PJ_SUCCESS; 
    14281432} 
     
    15481552         */ 
    15491553        if (!tp_ice->use_ice && 
    1550             (tp_ice->options & PJMEDIA_ICE_NO_SRC_ADDR_CHECKING) == 0 && 
    15511554            pj_sockaddr_cmp(&tp_ice->remote_rtp, src_addr) != 0 ) 
    15521555        { 
     
    15621565            tp_ice->rtp_src_cnt++; 
    15631566 
    1564             if (tp_ice->rtp_src_cnt >= PJMEDIA_RTP_NAT_PROBATION_CNT) { 
     1567            if ((tp_ice->options & PJMEDIA_ICE_NO_SRC_ADDR_CHECKING) == 0 && 
     1568                tp_ice->rtp_src_cnt >= PJMEDIA_RTP_NAT_PROBATION_CNT)  
     1569            { 
    15651570         
    15661571                char addr_text[80]; 
     
    16061611         */ 
    16071612        if (!tp_ice->use_ice && 
    1608             (tp_ice->options & PJMEDIA_ICE_NO_SRC_ADDR_CHECKING)==0 && 
    16091613            pj_sockaddr_cmp(&tp_ice->remote_rtcp, src_addr) != 0) 
    16101614        { 
    1611             char addr_text[80]; 
    1612  
    1613             pj_sockaddr_cp(&tp_ice->remote_rtcp, src_addr); 
    16141615            pj_sockaddr_cp(&tp_ice->rtcp_src_addr, src_addr); 
    16151616 
    1616             pj_assert(tp_ice->addr_len == pj_sockaddr_get_len(src_addr)); 
    1617  
    1618             PJ_LOG(4,(tp_ice->base.name, 
    1619                       "Remote RTCP address switched to %s", 
    1620                       pj_sockaddr_print(&tp_ice->remote_rtcp, addr_text, 
    1621                                         sizeof(addr_text), 3))); 
     1617            if ((tp_ice->options & PJMEDIA_ICE_NO_SRC_ADDR_CHECKING)==0) { 
     1618                char addr_text[80]; 
     1619 
     1620                pj_sockaddr_cp(&tp_ice->remote_rtcp, src_addr); 
     1621 
     1622                pj_assert(tp_ice->addr_len == pj_sockaddr_get_len(src_addr)); 
     1623 
     1624                PJ_LOG(4,(tp_ice->base.name, 
     1625                          "Remote RTCP address switched to %s", 
     1626                          pj_sockaddr_print(&tp_ice->remote_rtcp, addr_text, 
     1627                                            sizeof(addr_text), 3))); 
     1628            } 
    16221629        } 
    16231630    } 
  • pjproject/trunk/pjmedia/src/pjmedia/transport_udp.c

    r2129 r2291  
    606606    info->sock_info.rtcp_addr_name = udp->rtcp_addr_name; 
    607607 
     608    /* Get remote address originating RTP & RTCP. */ 
     609    info->rem_rtp_name  = udp->rtp_src_addr; 
     610    info->rem_rtcp_name = udp->rtcp_src_addr; 
     611 
    608612    return PJ_SUCCESS; 
    609613} 
  • pjproject/trunk/pjsip/src/pjsua-lib/pjsua_call.c

    r2266 r2291  
    20192019static void dump_media_session(const char *indent,  
    20202020                               char *buf, unsigned maxlen, 
    2021                                pjmedia_session *session) 
     2021                               pjsua_call *call) 
    20222022{ 
    20232023    unsigned i; 
     
    20252025    int len; 
    20262026    pjmedia_session_info info; 
    2027  
     2027    pjmedia_session *session = call->session; 
     2028    pjmedia_transport_info tp_info; 
     2029 
     2030    pjmedia_transport_info_init(&tp_info); 
     2031 
     2032    pjmedia_transport_get_info(call->med_tp, &tp_info); 
    20282033    pjmedia_session_get_info(session, &info); 
    20292034 
     
    20382043 
    20392044        pjmedia_session_get_stream_stat(session, i, &stat); 
    2040         rem_addr = pj_sockaddr_print(&info.stream_info[i].rem_addr, 
    2041                                      rem_addr_buf, sizeof(rem_addr_buf), 3); 
     2045        // rem_addr will contain actual address of RTP originator, instead of 
     2046        // remote RTP address specified by stream which is fetched from the SDP. 
     2047        // Please note that we are assuming only one stream per call. 
     2048        //rem_addr = pj_sockaddr_print(&info.stream_info[i].rem_addr, 
     2049        //                           rem_addr_buf, sizeof(rem_addr_buf), 3); 
     2050        if (pj_sockaddr_has_addr(&tp_info.rem_rtp_name)) { 
     2051            rem_addr = pj_sockaddr_print(&tp_info.rem_rtp_name, rem_addr_buf,  
     2052                                         sizeof(rem_addr_buf), 3); 
     2053        } else { 
     2054            pj_ansi_snprintf(rem_addr_buf, sizeof(rem_addr_buf), "-"); 
     2055        } 
    20422056 
    20432057        if (info.stream_info[i].dir == PJMEDIA_DIR_ENCODING) 
     
    26282642/* Print call info */ 
    26292643void print_call(const char *title, 
    2630                        int call_id,  
    2631                        char *buf, pj_size_t size) 
     2644                int call_id,  
     2645                char *buf, pj_size_t size) 
    26322646{ 
    26332647    int len; 
     
    27592773    /* Dump session statistics */ 
    27602774    if (with_media && call->session) 
    2761         dump_media_session(indent, p, end-p, call->session); 
     2775        dump_media_session(indent, p, end-p, call); 
    27622776 
    27632777    pjsip_dlg_dec_lock(dlg); 
Note: See TracChangeset for help on using the changeset viewer.