Changeset 568 for pjproject/trunk/pjmedia/src/pjmedia/session.c
- Timestamp:
- Jun 29, 2006 2:45:17 PM (18 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
pjproject/trunk/pjmedia/src/pjmedia/session.c
r452 r568 79 79 pj_status_t status; 80 80 81 82 81 83 82 /* Validate arguments: */ … … 156 155 157 156 /* Set remote address: */ 158 159 si->rem_addr.sin_family = PJ_AF_INET; 160 si->rem_addr.sin_port = pj_htons(rem_m->desc.port); 161 if (pj_inet_aton(&rem_conn->addr, &si->rem_addr.sin_addr) == 0) { 162 157 status = pj_sockaddr_in_init(&si->rem_addr, &rem_conn->addr, 158 rem_m->desc.port); 159 if (status != PJ_SUCCESS) { 163 160 /* Invalid IP address. */ 164 161 return PJMEDIA_EINVALIDIP; 165 162 } 163 164 /* If "rtcp" attribute is present in the SDP, set the RTCP address 165 * from that attribute. Otherwise, calculate from RTP address. 166 */ 167 attr = pjmedia_sdp_attr_find2(rem_m->attr_count, rem_m->attr, 168 "rtcp", NULL); 169 if (attr) { 170 pjmedia_sdp_rtcp_attr rtcp; 171 status = pjmedia_sdp_attr_get_rtcp(attr, &rtcp); 172 if (status == PJ_SUCCESS) { 173 if (rtcp.addr.slen) { 174 status = pj_sockaddr_in_init(&si->rem_rtcp, &rtcp.addr, 175 (pj_uint16_t)rtcp.port); 176 } else { 177 pj_sockaddr_in_init(&si->rem_rtcp, NULL, 178 (pj_uint16_t)rtcp.port); 179 si->rem_rtcp.sin_addr.s_addr = si->rem_addr.sin_addr.s_addr; 180 } 181 } 182 } 183 184 if (si->rem_rtcp.sin_addr.s_addr == 0) { 185 int rtcp_port; 186 187 pj_memcpy(&si->rem_rtcp, &si->rem_addr, sizeof(pj_sockaddr_in)); 188 rtcp_port = pj_ntohs(si->rem_addr.sin_port) + 1; 189 si->rem_rtcp.sin_port = pj_htons((pj_uint16_t)rtcp_port); 190 } 191 166 192 167 193 /* And codec must be numeric! */
Note: See TracChangeset
for help on using the changeset viewer.