- Timestamp:
- Nov 1, 2006 1:57:01 PM (17 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
pjproject/branches/symbian/pjsip/src/pjsip/sip_transport_udp.c
r789 r791 579 579 */ 580 580 PJ_DEF(pj_status_t) pjsip_udp_transport_start( pjsip_endpoint *endpt, 581 const pj_sockaddr_in *local ,581 const pj_sockaddr_in *local_a, 582 582 const pjsip_host_port *a_name, 583 583 unsigned async_cnt, … … 587 587 pj_status_t status; 588 588 char addr_buf[16]; 589 pj_sockaddr_in tmp_addr; 589 590 pjsip_host_port bound_name; 590 591 591 PJ_ASSERT_RETURN( local != NULL, PJ_EINVAL);592 PJ_ASSERT_RETURN(endpt && async_cnt, PJ_EINVAL); 592 593 593 594 status = pj_sock_socket(PJ_AF_INET, PJ_SOCK_DGRAM, 0, &sock); … … 595 596 return status; 596 597 597 status = pj_sock_bind(sock, local, sizeof(*local)); 598 if (local_a == NULL) { 599 pj_sockaddr_in_init(&tmp_addr, NULL, 0); 600 local_a = &tmp_addr; 601 } 602 603 status = pj_sock_bind(sock, local_a, sizeof(*local_a)); 598 604 if (status != PJ_SUCCESS) { 599 605 pj_sock_close(sock); … … 605 611 * Build a name based on bound address. 606 612 */ 613 int addr_len; 614 615 addr_len = sizeof(tmp_addr); 616 status = pj_sock_getsockname(sock, &tmp_addr, &addr_len); 617 if (status != PJ_SUCCESS) { 618 pj_sock_close(sock); 619 return status; 620 } 621 607 622 a_name = &bound_name; 608 623 bound_name.host.ptr = addr_buf; 609 bound_name.port = pj_ntohs( local->sin_port);624 bound_name.port = pj_ntohs(tmp_addr.sin_port); 610 625 611 626 /* If bound address specifies "0.0.0.0", get the IP address 612 627 * of local hostname. 613 628 */ 614 if (local->sin_addr.s_addr == PJ_INADDR_ANY) { 615 pj_hostent he; 616 const pj_str_t *hostname = pj_gethostname(); 617 status = pj_gethostbyname(hostname, &he); 618 if (status != PJ_SUCCESS) { 619 pj_sock_close(sock); 629 if (tmp_addr.sin_addr.s_addr == PJ_INADDR_ANY) { 630 pj_in_addr hostip; 631 632 status = pj_gethostip(&hostip); 633 if (status != PJ_SUCCESS) 620 634 return status; 621 } 622 pj_strcpy2(&bound_name.host, 623 pj_inet_ntoa(*(pj_in_addr*)he.h_addr)); 635 636 pj_strcpy2(&bound_name.host, pj_inet_ntoa(hostip)); 624 637 } else { 625 638 /* Otherwise use bound address. */ 626 pj_strcpy2(&bound_name.host, pj_inet_ntoa( local->sin_addr));639 pj_strcpy2(&bound_name.host, pj_inet_ntoa(tmp_addr.sin_addr)); 627 640 } 628 641
Note: See TracChangeset
for help on using the changeset viewer.