Changeset 1615 for pjproject/trunk/pjmedia/src/pjmedia/endpoint.c
- Timestamp:
- Dec 3, 2007 2:38:25 PM (16 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
pjproject/trunk/pjmedia/src/pjmedia/endpoint.c
r1589 r1615 35 35 static const pj_str_t STR_IN = { "IN", 2 }; 36 36 static const pj_str_t STR_IP4 = { "IP4", 3}; 37 static const pj_str_t STR_IP6 = { "IP6", 3}; 37 38 static const pj_str_t STR_RTP_AVP = { "RTP/AVP", 7 }; 38 39 static const pj_str_t STR_SDP_NAME = { "pjmedia", 7 }; … … 290 291 pj_time_val tv; 291 292 unsigned i; 293 const pj_sockaddr *addr0; 292 294 pjmedia_sdp_session *sdp; 293 295 pjmedia_sdp_media *m; … … 303 305 /* Create and initialize basic SDP session */ 304 306 sdp = PJ_POOL_ZALLOC_T(pool, pjmedia_sdp_session); 307 308 addr0 = &sock_info[0].rtp_addr_name; 305 309 306 310 pj_gettimeofday(&tv); … … 308 312 sdp->origin.version = sdp->origin.id = tv.sec + 2208988800UL; 309 313 sdp->origin.net_type = STR_IN; 310 sdp->origin.addr_type = STR_IP4; 311 pj_strdup2(pool, &sdp->origin.addr, 312 pj_inet_ntoa(sock_info[0].rtp_addr_name.sin_addr)); 314 315 if (addr0->addr.sa_family == pj_AF_INET()) { 316 sdp->origin.addr_type = STR_IP4; 317 pj_strdup2(pool, &sdp->origin.addr, 318 pj_inet_ntoa(addr0->ipv4.sin_addr)); 319 } else if (addr0->addr.sa_family == pj_AF_INET6()) { 320 char tmp_addr[PJ_INET6_ADDRSTRLEN]; 321 322 sdp->origin.addr_type = STR_IP6; 323 pj_strdup2(pool, &sdp->origin.addr, 324 pj_sockaddr_print(addr0, tmp_addr, sizeof(tmp_addr), 0)); 325 326 } else { 327 pj_assert(!"Invalid address family"); 328 return PJ_EAFNOTSUP; 329 } 330 313 331 sdp->name = STR_SDP_NAME; 314 332 … … 317 335 */ 318 336 sdp->conn = PJ_POOL_ZALLOC_T(pool, pjmedia_sdp_conn); 319 sdp->conn->net_type = STR_IN; 320 sdp->conn->addr_type = STR_IP4; 321 pj_strdup2(pool, &sdp->conn->addr, 322 pj_inet_ntoa(sock_info[0].rtp_addr_name.sin_addr)); 337 sdp->conn->net_type = sdp->origin.net_type; 338 sdp->conn->addr_type = sdp->origin.addr_type; 339 sdp->conn->addr = sdp->origin.addr; 323 340 324 341 … … 335 352 /* Standard media info: */ 336 353 pj_strdup(pool, &m->desc.media, &STR_AUDIO); 337 m->desc.port = pj_ ntohs(sock_info[0].rtp_addr_name.sin_port);354 m->desc.port = pj_sockaddr_get_port(addr0); 338 355 m->desc.port_count = 1; 339 356 pj_strdup (pool, &m->desc.transport, &STR_RTP_AVP); … … 345 362 /* Add "rtcp" attribute */ 346 363 #if defined(PJMEDIA_HAS_RTCP_IN_SDP) && PJMEDIA_HAS_RTCP_IN_SDP!=0 347 if (sock_info->rtcp_addr_name.sin_family != 0) { 364 if (sock_info->rtcp_addr_name.addr.sa_family != 0) { 365 const pj_sockaddr *rtcp_addr = &sock_info->rtcp_addr_name; 366 348 367 attr = PJ_POOL_ALLOC_T(pool, pjmedia_sdp_attr); 349 368 attr->name = pj_str("rtcp"); 350 369 attr->value.ptr = (char*) pj_pool_alloc(pool, 80); 351 attr->value.slen = 352 pj_ansi_snprintf(attr->value.ptr, 80, 353 "%u IN IP4 %s", 354 pj_ntohs(sock_info[0].rtcp_addr_name.sin_port), 355 pj_inet_ntoa(sock_info[0].rtcp_addr_name.sin_addr)); 370 if (rtcp_addr->addr.sa_family == pj_AF_INET()) { 371 attr->value.slen = 372 pj_ansi_snprintf(attr->value.ptr, 80, 373 "%u IN IP4 %s", 374 pj_ntohs(rtcp_addr->ipv4.sin_port), 375 pj_inet_ntoa(rtcp_addr->ipv4.sin_addr)); 376 } else if (rtcp_addr->addr.sa_family == pj_AF_INET6()) { 377 char tmp_addr[PJ_INET6_ADDRSTRLEN]; 378 attr->value.slen = 379 pj_ansi_snprintf(attr->value.ptr, 80, 380 "%u IN IP6 %s", 381 pj_sockaddr_get_port(rtcp_addr), 382 pj_sockaddr_print(rtcp_addr, tmp_addr, 383 sizeof(tmp_addr), 0)); 384 385 } else { 386 pj_assert(!"Unsupported address family"); 387 return PJ_EAFNOTSUP; 388 } 356 389 pjmedia_sdp_attr_add(&m->attr_count, m->attr, attr); 357 390 }
Note: See TracChangeset
for help on using the changeset viewer.