Changeset 2293 for pjproject/trunk


Ignore:
Timestamp:
Sep 18, 2008 12:58:33 PM (16 years ago)
Author:
nanang
Message:

Ticket #631:

  • Changed rem_rtp/rtcp_addr to src_rtp/rtcp_addr in media transport info
  • Updated behaviour of media transport get info, when the transport hasn't receive any packet src_rtp/rtcp_addr will not be set.
  • Fixed bug in pjsua_call_dump that rem_addr was unset.
Location:
pjproject/trunk
Files:
4 edited

Legend:

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

    r2291 r2293  
    494494 
    495495    /** 
    496      * Remote address where RTP/RTCP originated from. 
    497      */ 
    498     pj_sockaddr     rem_rtp_name; 
    499     pj_sockaddr     rem_rtcp_name; 
     496     * Remote address where RTP/RTCP originated from. In case this transport 
     497     * hasn't ever received packet, the  
     498     */ 
     499    pj_sockaddr     src_rtp_name; 
     500    pj_sockaddr     src_rtcp_name; 
    500501 
    501502    /** 
  • pjproject/trunk/pjmedia/src/pjmedia/transport_ice.c

    r2291 r2293  
    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; 
     1427    /* Set remote address originating RTP & RTCP if this transport has  
     1428     * received any packets. 
     1429     */ 
     1430    if (tp_ice->rtp_src_cnt) { 
     1431        info->src_rtp_name  = tp_ice->rtp_src_addr; 
     1432        info->src_rtcp_name = tp_ice->rtcp_src_addr; 
     1433    } 
    14301434 
    14311435    return PJ_SUCCESS; 
     
    14551459    tp_ice->addr_len = addr_len; 
    14561460 
     1461    /* Init source RTP & RTCP addresses and counter */ 
     1462    tp_ice->rtp_src_addr = tp_ice->remote_rtp; 
     1463    tp_ice->rtcp_src_addr = tp_ice->remote_rtcp; 
     1464    tp_ice->rtp_src_cnt = 0; 
     1465 
    14571466    return PJ_SUCCESS; 
    14581467} 
     
    15511560         * have been received. 
    15521561         */ 
    1553         if (!tp_ice->use_ice && 
    1554             pj_sockaddr_cmp(&tp_ice->remote_rtp, src_addr) != 0 ) 
    1555         { 
    1556             /* Check if the source address is recognized. */ 
    1557             if (pj_sockaddr_cmp(src_addr, &tp_ice->rtp_src_addr) != 0) { 
    1558                 /* Remember the new source address. */ 
    1559                 pj_sockaddr_cp(&tp_ice->rtp_src_addr, src_addr); 
    1560  
    1561                 /* Reset counter */ 
    1562                 tp_ice->rtp_src_cnt = 0; 
    1563             } 
    1564  
    1565             tp_ice->rtp_src_cnt++; 
    1566  
    1567             if ((tp_ice->options & PJMEDIA_ICE_NO_SRC_ADDR_CHECKING) == 0 && 
    1568                 tp_ice->rtp_src_cnt >= PJMEDIA_RTP_NAT_PROBATION_CNT)  
    1569             { 
    1570          
    1571                 char addr_text[80]; 
    1572  
    1573                 /* Set remote RTP address to source address */ 
    1574                 pj_sockaddr_cp(&tp_ice->remote_rtp, &tp_ice->rtp_src_addr); 
    1575                 tp_ice->addr_len = pj_sockaddr_get_len(&tp_ice->remote_rtp); 
    1576  
    1577                 /* Reset counter */ 
    1578                 tp_ice->rtp_src_cnt = 0; 
    1579  
    1580                 PJ_LOG(4,(tp_ice->base.name, 
    1581                           "Remote RTP address switched to %s", 
    1582                           pj_sockaddr_print(&tp_ice->remote_rtp, addr_text, 
    1583                                             sizeof(addr_text), 3))); 
    1584  
    1585                 /* Also update remote RTCP address if actual RTCP source 
    1586                  * address is not heard yet. 
    1587                  */ 
    1588                 if (!pj_sockaddr_has_addr(&tp_ice->rtcp_src_addr)) { 
    1589                     pj_uint16_t port; 
    1590  
    1591                     pj_sockaddr_cp(&tp_ice->remote_rtcp, &tp_ice->remote_rtp); 
    1592  
    1593                     port = (pj_uint16_t) 
    1594                            (pj_sockaddr_get_port(&tp_ice->remote_rtp)+1); 
    1595                     pj_sockaddr_set_port(&tp_ice->remote_rtcp, port); 
     1562        if (!tp_ice->use_ice) { 
     1563 
     1564            /* Increment counter and avoid zero */ 
     1565            if (++tp_ice->rtp_src_cnt == 0)  
     1566                tp_ice->rtp_src_cnt = 1; 
     1567 
     1568            if (pj_sockaddr_cmp(&tp_ice->remote_rtp, src_addr) != 0) { 
     1569 
     1570                /* Check if the source address is recognized. */ 
     1571                if (pj_sockaddr_cmp(src_addr, &tp_ice->rtp_src_addr) != 0) { 
     1572                    /* Remember the new source address. */ 
     1573                    pj_sockaddr_cp(&tp_ice->rtp_src_addr, src_addr); 
     1574                    /* Reset counter */ 
     1575                    tp_ice->rtp_src_cnt = 0; 
     1576                } 
     1577 
     1578                if ((tp_ice->options & PJMEDIA_ICE_NO_SRC_ADDR_CHECKING)==0 && 
     1579                    tp_ice->rtp_src_cnt >= PJMEDIA_RTP_NAT_PROBATION_CNT)  
     1580                { 
     1581                    char addr_text[80]; 
     1582 
     1583                    /* Set remote RTP address to source address */ 
     1584                    pj_sockaddr_cp(&tp_ice->remote_rtp, &tp_ice->rtp_src_addr); 
     1585                    tp_ice->addr_len = pj_sockaddr_get_len(&tp_ice->remote_rtp); 
     1586 
     1587                    /* Reset counter */ 
     1588                    tp_ice->rtp_src_cnt = 0; 
    15961589 
    15971590                    PJ_LOG(4,(tp_ice->base.name, 
    1598                               "Remote RTCP address switched to %s", 
    1599                               pj_sockaddr_print(&tp_ice->remote_rtcp, addr_text, 
     1591                              "Remote RTP address switched to %s", 
     1592                              pj_sockaddr_print(&tp_ice->remote_rtp, addr_text, 
    16001593                                                sizeof(addr_text), 3))); 
    16011594 
     1595                    /* Also update remote RTCP address if actual RTCP source 
     1596                     * address is not heard yet. 
     1597                     */ 
     1598                    if (!pj_sockaddr_has_addr(&tp_ice->rtcp_src_addr)) { 
     1599                        pj_uint16_t port; 
     1600 
     1601                        pj_sockaddr_cp(&tp_ice->remote_rtcp,  
     1602                                       &tp_ice->remote_rtp); 
     1603 
     1604                        port = (pj_uint16_t) 
     1605                               (pj_sockaddr_get_port(&tp_ice->remote_rtp)+1); 
     1606                        pj_sockaddr_set_port(&tp_ice->remote_rtcp, port); 
     1607 
     1608                        PJ_LOG(4,(tp_ice->base.name, 
     1609                                  "Remote RTCP address switched to %s", 
     1610                                  pj_sockaddr_print(&tp_ice->remote_rtcp,  
     1611                                                    addr_text, 
     1612                                                    sizeof(addr_text), 3))); 
     1613                    } 
    16021614                } 
    16031615            } 
  • pjproject/trunk/pjmedia/src/pjmedia/transport_udp.c

    r2291 r2293  
    607607 
    608608    /* Get remote address originating RTP & RTCP. */ 
    609     info->rem_rtp_name  = udp->rtp_src_addr; 
    610     info->rem_rtcp_name = udp->rtcp_src_addr; 
     609    info->src_rtp_name  = udp->rtp_src_addr; 
     610    info->src_rtcp_name = udp->rtcp_src_addr; 
    611611 
    612612    return PJ_SUCCESS; 
     
    666666    udp->attached = PJ_TRUE; 
    667667 
     668    /* Reset source RTP & RTCP addresses and counter */ 
     669    pj_bzero(&udp->rtp_src_addr, sizeof(udp->rtp_src_addr)); 
     670    pj_bzero(&udp->rtcp_src_addr, sizeof(udp->rtcp_src_addr)); 
     671    udp->rtp_src_cnt = 0; 
     672 
    668673    return PJ_SUCCESS; 
    669674} 
  • pjproject/trunk/pjsip/src/pjsua-lib/pjsua_call.c

    r2291 r2293  
    20482048        //rem_addr = pj_sockaddr_print(&info.stream_info[i].rem_addr, 
    20492049        //                           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,  
     2050        if (pj_sockaddr_has_addr(&tp_info.src_rtp_name)) { 
     2051            rem_addr = pj_sockaddr_print(&tp_info.src_rtp_name, rem_addr_buf,  
    20522052                                         sizeof(rem_addr_buf), 3); 
    20532053        } else { 
    20542054            pj_ansi_snprintf(rem_addr_buf, sizeof(rem_addr_buf), "-"); 
     2055            rem_addr = rem_addr_buf; 
    20552056        } 
    20562057 
Note: See TracChangeset for help on using the changeset viewer.