Ignore:
Timestamp:
Nov 1, 2006 1:57:01 PM (17 years ago)
Author:
bennylp
Message:

Ported all projects (except pjmedia-codec) on Symbian. PJMEDIA's sound device is still in progress

File:
1 edited

Legend:

Unmodified
Added
Removed
  • pjproject/branches/symbian/pjsip/src/pjsip/sip_transport_udp.c

    r789 r791  
    579579 */ 
    580580PJ_DEF(pj_status_t) pjsip_udp_transport_start( pjsip_endpoint *endpt, 
    581                                                const pj_sockaddr_in *local, 
     581                                               const pj_sockaddr_in *local_a, 
    582582                                               const pjsip_host_port *a_name, 
    583583                                               unsigned async_cnt, 
     
    587587    pj_status_t status; 
    588588    char addr_buf[16]; 
     589    pj_sockaddr_in tmp_addr; 
    589590    pjsip_host_port bound_name; 
    590591 
    591     PJ_ASSERT_RETURN(local != NULL, PJ_EINVAL); 
     592    PJ_ASSERT_RETURN(endpt && async_cnt, PJ_EINVAL); 
    592593 
    593594    status = pj_sock_socket(PJ_AF_INET, PJ_SOCK_DGRAM, 0, &sock); 
     
    595596        return status; 
    596597 
    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)); 
    598604    if (status != PJ_SUCCESS) { 
    599605        pj_sock_close(sock); 
     
    605611         * Build a name based on bound address. 
    606612         */ 
     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 
    607622        a_name = &bound_name; 
    608623        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); 
    610625 
    611626        /* If bound address specifies "0.0.0.0", get the IP address 
    612627         * of local hostname. 
    613628         */ 
    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) 
    620634                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)); 
    624637        } else { 
    625638            /* 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)); 
    627640        } 
    628641         
Note: See TracChangeset for help on using the changeset viewer.