Ignore:
Timestamp:
Dec 28, 2016 3:40:07 AM (8 years ago)
Author:
nanang
Message:

Re #1900: More merged from trunk (r5512 mistakenly contains merged changes in third-party dir only).

Location:
pjproject/branches/projects/uwp
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • pjproject/branches/projects/uwp

  • pjproject/branches/projects/uwp/pjnath/src/pjnath-test/server.c

    r5170 r5513  
    5454    char strbuf[100]; 
    5555    pj_status_t status; 
     56    pj_bool_t use_ipv6 = flags & SERVER_IPV6; 
    5657 
    5758    PJ_ASSERT_RETURN(stun_cfg && domain && p_test_srv, PJ_EINVAL); 
    5859 
    59     status = pj_gethostip(pj_AF_INET(), &hostip); 
    60     if (status != PJ_SUCCESS) 
    61         return status; 
     60    if (use_ipv6) { 
     61        /* pj_gethostip() may return IPv6 link-local and will cause EINVAL 
     62         * error, so let's just hardcode it. 
     63         */ 
     64        pj_sockaddr_init(pj_AF_INET6(), &hostip, NULL, 0); 
     65        hostip.ipv6.sin6_addr.s6_addr[15] = 1; 
     66    } else { 
     67        status = pj_gethostip(GET_AF(use_ipv6), &hostip); 
     68        if (status != PJ_SUCCESS) 
     69            return status; 
     70    } 
    6271 
    6372    pool = pj_pool_create(mem, THIS_FILE, 512, 512, NULL); 
     
    7584    if (flags & CREATE_DNS_SERVER) { 
    7685        status = pj_dns_server_create(mem, test_srv->stun_cfg->ioqueue, 
    77                                       pj_AF_INET(), DNS_SERVER_PORT, 
     86                                      GET_AF(use_ipv6), DNS_SERVER_PORT, 
    7887                                      0, &test_srv->dns_server); 
    7988        if (status != PJ_SUCCESS) { 
     
    8695            pj_dns_parsed_rr rr; 
    8796            pj_str_t res_name; 
    88             pj_in_addr ip_addr; 
    8997 
    9098            pj_strdup2(pool, &res_name, domain); 
    91             ip_addr = hostip.ipv4.sin_addr; 
    92             pj_dns_init_a_rr(&rr, &res_name, PJ_DNS_CLASS_IN, 60, &ip_addr); 
     99 
     100            if (use_ipv6) { 
     101                pj_dns_init_aaaa_rr(&rr, &res_name, PJ_DNS_CLASS_IN, 60,  
     102                                    &hostip.ipv6.sin6_addr); 
     103            } else {             
     104                pj_dns_init_a_rr(&rr, &res_name, PJ_DNS_CLASS_IN, 60,  
     105                                 &hostip.ipv4.sin_addr); 
     106            } 
     107             
    93108            pj_dns_server_add_rec(test_srv->dns_server, 1, &rr); 
    94109        } 
     
    103118        stun_sock_cb.on_data_recvfrom = &stun_on_data_recvfrom; 
    104119 
    105         pj_sockaddr_in_init(&bound_addr.ipv4, NULL, STUN_SERVER_PORT); 
     120        pj_sockaddr_init(GET_AF(use_ipv6), &bound_addr,  
     121                         NULL, STUN_SERVER_PORT); 
    106122 
    107123        status = pj_activesock_create_udp(pool, &bound_addr, NULL,  
     
    124140            pj_str_t res_name, target; 
    125141            pj_dns_parsed_rr rr; 
    126             pj_in_addr ip_addr; 
    127142 
    128143            /* Add DNS entries: 
     
    141156 
    142157            res_name = target; 
    143             ip_addr = hostip.ipv4.sin_addr; 
    144             pj_dns_init_a_rr(&rr, &res_name, PJ_DNS_CLASS_IN, 60, &ip_addr); 
     158            if (use_ipv6) {              
     159                pj_dns_init_aaaa_rr(&rr, &res_name, PJ_DNS_CLASS_IN, 60,  
     160                                    &hostip.ipv6.sin6_addr); 
     161            } else {             
     162                pj_dns_init_a_rr(&rr, &res_name, PJ_DNS_CLASS_IN, 60,  
     163                                 &hostip.ipv4.sin_addr); 
     164            } 
    145165            pj_dns_server_add_rec(test_srv->dns_server, 1, &rr); 
    146166        } 
     
    155175        turn_sock_cb.on_data_recvfrom = &turn_on_data_recvfrom; 
    156176 
    157         pj_sockaddr_in_init(&bound_addr.ipv4, NULL, TURN_SERVER_PORT); 
     177        pj_sockaddr_init(GET_AF(use_ipv6), &bound_addr, NULL, TURN_SERVER_PORT); 
    158178 
    159179        status = pj_activesock_create_udp(pool, &bound_addr, NULL,  
     
    176196            pj_str_t res_name, target; 
    177197            pj_dns_parsed_rr rr; 
    178             pj_in_addr ip_addr; 
    179198 
    180199            /* Add DNS entries: 
     
    193212 
    194213            res_name = target; 
    195             ip_addr = hostip.ipv4.sin_addr; 
    196             pj_dns_init_a_rr(&rr, &res_name, PJ_DNS_CLASS_IN, 60, &ip_addr); 
     214             
     215            if (use_ipv6) {              
     216                pj_dns_init_aaaa_rr(&rr, &res_name, PJ_DNS_CLASS_IN, 60,  
     217                                    &hostip.ipv6.sin6_addr); 
     218            } else {             
     219                pj_dns_init_a_rr(&rr, &res_name, PJ_DNS_CLASS_IN, 60,  
     220                                 &hostip.ipv4.sin_addr); 
     221            } 
    197222            pj_dns_server_add_rec(test_srv->dns_server, 1, &rr); 
    198223        } 
     
    345370    unsigned i; 
    346371    pj_ssize_t len; 
     372    pj_bool_t use_ipv6 = PJ_FALSE; 
    347373 
    348374    if (status != PJ_SUCCESS) 
     
    352378 
    353379    test_srv = (test_server*) pj_activesock_get_user_data(asock); 
     380    use_ipv6 = test_srv->flags & SERVER_IPV6; 
    354381    pool = pj_pool_create(test_srv->stun_cfg->pf, NULL, 512, 512, NULL); 
    355382 
     
    481508        alloc->pool = pj_pool_create(test_srv->stun_cfg->pf, "alloc", 512, 512, NULL); 
    482509 
    483         /* Create relay socket */ 
    484         pj_sockaddr_in_init(&alloc->alloc_addr.ipv4, NULL, 0); 
    485         pj_gethostip(pj_AF_INET(), &alloc->alloc_addr); 
     510        /* Create relay socket */        
     511        pj_sockaddr_init(GET_AF(use_ipv6), &alloc->alloc_addr, NULL, 0); 
     512        if (use_ipv6) { 
     513            /* pj_gethostip() may return IPv6 link-local and will cause EINVAL 
     514             * error, so let's just hardcode it. 
     515             */ 
     516            pj_sockaddr_init(pj_AF_INET6(), &alloc->alloc_addr, NULL, 0); 
     517            alloc->alloc_addr.ipv6.sin6_addr.s6_addr[15] = 1; 
     518        } else { 
     519            status = pj_gethostip(GET_AF(use_ipv6), &alloc->alloc_addr); 
     520            if (status != PJ_SUCCESS) { 
     521                pj_pool_release(alloc->pool); 
     522                pj_stun_msg_create_response(pool, req, PJ_STUN_SC_SERVER_ERROR, 
     523                                            NULL, &resp); 
     524                goto send_pkt; 
     525            } 
     526        } 
    486527 
    487528        status = pj_activesock_create_udp(alloc->pool, &alloc->alloc_addr, NULL,  
     
    698739    unsigned i; 
    699740 
     741    PJ_UNUSED_ARG(addr_len); 
     742 
    700743    if (status != PJ_SUCCESS) 
    701744        return PJ_TRUE; 
     
    708751    /* Check that this peer has a permission */ 
    709752    for (i=0; i<alloc->perm_cnt; ++i) { 
    710         if (pj_sockaddr_get_len(&alloc->perm[i]) == (unsigned)addr_len && 
    711             pj_memcmp(pj_sockaddr_get_addr(&alloc->perm[i]), 
    712                       pj_sockaddr_get_addr(src_addr), 
    713                       addr_len) == 0) 
     753        if (pj_sockaddr_cmp(&alloc->perm[i], src_addr) == 0) 
    714754        { 
    715755            break; 
Note: See TracChangeset for help on using the changeset viewer.