Changeset 2293 for pjproject/trunk/pjmedia/src/pjmedia/transport_ice.c
- Timestamp:
- Sep 18, 2008 12:58:33 PM (15 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
pjproject/trunk/pjmedia/src/pjmedia/transport_ice.c
r2291 r2293 1425 1425 } 1426 1426 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 } 1430 1434 1431 1435 return PJ_SUCCESS; … … 1455 1459 tp_ice->addr_len = addr_len; 1456 1460 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 1457 1466 return PJ_SUCCESS; 1458 1467 } … … 1551 1560 * have been received. 1552 1561 */ 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; 1596 1589 1597 1590 PJ_LOG(4,(tp_ice->base.name, 1598 "Remote RT CP address switched to %s",1599 pj_sockaddr_print(&tp_ice->remote_rt cp, addr_text,1591 "Remote RTP address switched to %s", 1592 pj_sockaddr_print(&tp_ice->remote_rtp, addr_text, 1600 1593 sizeof(addr_text), 3))); 1601 1594 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 } 1602 1614 } 1603 1615 }
Note: See TracChangeset
for help on using the changeset viewer.