Ignore:
Timestamp:
May 9, 2018 6:58:48 AM (17 months ago)
Author:
ming
Message:

Fixed #2087: Support for RTP and RTCP multiplexing

File:
1 edited

Legend:

Unmodified
Added
Removed
  • pjproject/trunk/pjmedia/src/pjmedia/transport_srtp_dtls.c

    r5783 r5788  
    986986            pj_sockaddr_cp(&ap.rem_addr, &ds->rem_addr); 
    987987            ap.addr_len = pj_sockaddr_get_len(&ap.rem_addr); 
    988             if (pj_sockaddr_has_addr(&ds->rem_rtcp)) { 
     988            if (pj_sockaddr_cmp(&info.sock_info.rtp_addr_name, 
     989                                &info.sock_info.rtcp_addr_name) == 0) 
     990            { 
     991                /* Using RTP & RTCP multiplexing */ 
     992                pj_sockaddr_cp(&ds->rem_rtcp, &ds->rem_addr); 
     993                pj_sockaddr_cp(&ap.rem_rtcp, &ds->rem_rtcp); 
     994            } else if (pj_sockaddr_has_addr(&ds->rem_rtcp)) { 
    989995                pj_sockaddr_cp(&ap.rem_rtcp, &ds->rem_rtcp); 
    990996            } else { 
     
    11871193    { 
    11881194        pjmedia_transport_attach_param ap; 
     1195        pjmedia_transport_info info; 
     1196 
    11891197        pj_bzero(&ap, sizeof(ap)); 
    11901198        ap.user_data = ds->srtp; 
     1199        pjmedia_transport_get_info(ds->srtp->member_tp, &info); 
    11911200 
    11921201        if (sdp_remote) 
    11931202            get_rem_addrs(ds, sdp_remote, media_index); 
    11941203 
    1195         if (pj_sockaddr_has_addr(&ds->rem_addr)) 
     1204        if (pj_sockaddr_has_addr(&ds->rem_addr)) { 
    11961205            pj_sockaddr_cp(&ap.rem_addr, &ds->rem_addr); 
    1197         else 
     1206        } else if (pj_sockaddr_has_addr(&info.sock_info.rtp_addr_name)) { 
     1207            pj_sockaddr_cp(&ap.rem_addr, &info.sock_info.rtp_addr_name); 
     1208        } else { 
    11981209            pj_sockaddr_init(pj_AF_INET(), &ap.rem_addr, 0, 0); 
    1199  
    1200         if (pj_sockaddr_has_addr(&ds->rem_rtcp)) 
     1210        } 
     1211 
     1212        if (pj_sockaddr_cmp(&info.sock_info.rtp_addr_name, 
     1213                            &info.sock_info.rtcp_addr_name) == 0) 
     1214        { 
     1215            /* Using RTP & RTCP multiplexing */ 
     1216            pj_sockaddr_cp(&ap.rem_rtcp, &ap.rem_addr); 
     1217        } else if (pj_sockaddr_has_addr(&ds->rem_rtcp)) { 
    12011218            pj_sockaddr_cp(&ap.rem_rtcp, &ds->rem_rtcp); 
    1202         else 
     1219        } else if (pj_sockaddr_has_addr(&info.sock_info.rtcp_addr_name)) { 
     1220            pj_sockaddr_cp(&ap.rem_rtcp, &info.sock_info.rtcp_addr_name); 
     1221        } else { 
    12031222            pj_sockaddr_init(pj_AF_INET(), &ap.rem_rtcp, 0, 0); 
     1223        } 
    12041224 
    12051225        ap.addr_len = pj_sockaddr_get_len(&ap.rem_addr); 
Note: See TracChangeset for help on using the changeset viewer.