Changeset b4049f9 in code for icbd.c


Ignore:
Timestamp:
Mar 4, 2014, 10:34:57 AM (11 years ago)
Author:
Mike Belopuhov <mike@…>
Branches:
master
Children:
5815eef
Parents:
fa271b8
Message:

Rewrite DNS resolver to do things truly asynchronously

File:
1 edited

Legend:

Unmodified
Added
Removed
  • icbd.c

    rfa271b8 rb4049f9  
    213213
    214214        /* start a dns resolver thread */
    215         icbd_dns_init();
     215        dns_init();
    216216
    217217        if (!foreground)
     
    225225
    226226        return (EX_UNAVAILABLE);
    227 }
    228 
    229 void
    230 icbd_dns(int fd, short event, void *arg)
    231 {
    232         struct icb_session *is = arg;
    233 
    234         if (event != EV_READ)
    235                 return;
    236 
    237         if (read(fd, is->host, sizeof is->host) < 0)
    238                 syslog(LOG_ERR, "read: %m");
    239 
    240         is->host[sizeof is->host - 1] = '\0';
    241 
    242         if (verbose)
    243                 syslog(LOG_DEBUG, "icbd_dns: resolved %s", is->host);
    244227}
    245228
     
    547530{
    548531        struct sockaddr_storage ss;
     532        struct sockaddr_in *sin = (struct sockaddr_in *)&ss;
     533        struct sockaddr_in6 *sin6 = (struct sockaddr_in6 *)&ss;
    549534        socklen_t ss_len = sizeof ss;
    550535
     
    557542        switch (ss.ss_family) {
    558543        case AF_INET:
    559                 is->port = ntohs(((struct sockaddr_in *)&ss)->sin_port);
     544                is->port = ntohs(sin->sin_port);
    560545                break;
    561546
    562547        case AF_INET6:
    563                 is->port = ntohs(((struct sockaddr_in6 *)&ss)->sin6_port);
     548                is->port = ntohs(sin6->sin6_port);
    564549                break;
    565550        }
    566551
     552        inet_ntop(ss.ss_family, ss.ss_family == AF_INET ?
     553            (void *)&sin->sin_addr : (void *)&sin6->sin6_addr,
     554            is->host, sizeof is->host);
     555
    567556        dns_rresolv(is, &ss);
    568557}
Note: See TracChangeset for help on using the changeset viewer.