Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/srv/net/dnsrsrv/transport.c

    r26de91a rfeeac0d  
    182182{
    183183        trans_req_t *treq = NULL;
    184         struct sockaddr *saddr = NULL;
    185         socklen_t saddrlen;
    186184       
    187185        void *req_data;
     
    191189                goto error;
    192190       
    193         rc = inet_addr_sockaddr(&dns_server_addr, DNS_SERVER_PORT,
    194             &saddr, &saddrlen);
    195         if (rc != EOK) {
    196                 assert(rc == ENOMEM);
     191        struct sockaddr_in addr;
     192        struct sockaddr_in6 addr6;
     193        uint16_t af =
     194            inet_addr_sockaddr_in(&dns_server_addr, &addr, &addr6);
     195       
     196        struct sockaddr *address;
     197        socklen_t addrlen;
     198       
     199        switch (af) {
     200        case AF_INET:
     201                addr.sin_port = htons(DNS_SERVER_PORT);
     202                address = (struct sockaddr *) &addr;
     203                addrlen = sizeof(addr);
     204                break;
     205        case AF_INET6:
     206                addr6.sin6_port = htons(DNS_SERVER_PORT);
     207                address = (struct sockaddr *) &addr6;
     208                addrlen = sizeof(addr6);
     209                break;
     210        default:
     211                rc = EAFNOSUPPORT;
    197212                goto error;
    198213        }
     
    202217        while (ntry < REQ_RETRY_MAX) {
    203218                rc = sendto(transport_fd, req_data, req_size, 0,
    204                     saddr, saddrlen);
     219                    (struct sockaddr *) address, addrlen);
    205220                if (rc != EOK)
    206221                        goto error;
     
    241256        treq_destroy(treq);
    242257        free(req_data);
    243         free(saddr);
    244258        return EOK;
    245259       
     
    249263       
    250264        free(req_data);
    251         free(saddr);
    252265        return rc;
    253266}
Note: See TracChangeset for help on using the changeset viewer.