Changeset 5636 for pjproject/trunk/pjlib/src/pj/sock_common.c
- Timestamp:
- Aug 2, 2017 2:51:59 AM (7 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
pjproject/trunk/pjlib/src/pj/sock_common.c
r5627 r5636 414 414 { 415 415 pj_memcpy(dst, src, pj_sockaddr_get_len(src)); 416 } 417 418 /* 419 * Synthesize address. 420 */ 421 PJ_DEF(pj_status_t) pj_sockaddr_synthesize(int dst_af, 422 pj_sockaddr_t *dst, 423 const pj_sockaddr_t *src) 424 { 425 char ip_addr_buf[PJ_INET6_ADDRSTRLEN]; 426 unsigned int count = 1; 427 pj_addrinfo ai[1]; 428 pj_str_t ip_addr; 429 pj_status_t status; 430 431 /* Validate arguments */ 432 PJ_ASSERT_RETURN(src && dst, PJ_EINVAL); 433 434 if (dst_af == ((const pj_sockaddr *)src)->addr.sa_family) { 435 pj_sockaddr_cp(dst, src); 436 return PJ_SUCCESS; 437 } 438 439 pj_sockaddr_print(src, ip_addr_buf, sizeof(ip_addr_buf), 0); 440 ip_addr = pj_str(ip_addr_buf); 441 442 /* Try to synthesize address using pj_getaddrinfo(). */ 443 status = pj_getaddrinfo(dst_af, &ip_addr, &count, ai); 444 if (status == PJ_SUCCESS && count > 0) { 445 pj_sockaddr_cp(dst, &ai[0].ai_addr); 446 pj_sockaddr_set_port(dst, pj_sockaddr_get_port(src)); 447 } 448 449 return status; 416 450 } 417 451
Note: See TracChangeset
for help on using the changeset viewer.