Changeset 9440414 in code


Ignore:
Timestamp:
Jun 17, 2014, 11:33:22 AM (11 years ago)
Author:
Mike Belopuhov <mike@…>
Branches:
master
Children:
120eedd
Parents:
d45051e
Message:

check that reverse dns entry can be resolved

Files:
3 edited

Legend:

Unmodified
Added
Removed
  • dns.c

    rd45051e r9440414  
    3333#include "icbd.h"
    3434
    35 void dns_done(struct asr_result *, void *);
     35void dns_done_host(struct asr_result *, void *);
     36void dns_done_reverse(struct asr_result *, void *);
    3637
    3738extern int dodns;
    3839
    3940void
    40 dns_done(struct asr_result *ar, void *arg)
     41dns_done_host(struct asr_result *ar, void *arg)
    4142{
    4243        struct icb_session *is = arg;
    4344
     45        if (ar->ar_addrinfo)
     46                freeaddrinfo(ar->ar_addrinfo);
     47
     48        /* just check that there's no error */
    4449        if (ar->ar_gai_errno == 0) {
    45                 icbd_log(is, LOG_DEBUG, "dns resolved %s to %s", is->host,
    46                     is->hostname);
    4750                if (strncmp(is->hostname, "localhost",
    4851                    sizeof "localhost" - 1) == 0)
     
    5659
    5760void
    58 dns_rresolv(struct icb_session *is, struct sockaddr *sa)
     61dns_done_reverse(struct asr_result *ar, void *arg)
     62{
     63        struct icb_session *is = arg;
     64        struct asr_query *as;
     65        struct addrinfo hints;
     66
     67        if (ar->ar_gai_errno == 0) {
     68                icbd_log(is, LOG_DEBUG, "reverse dns resolved %s to %s",
     69                    is->host, is->hostname);
     70                /* try to verify that it resolves back */
     71                memset(&hints, 0, sizeof(hints));
     72                hints.ai_family = PF_UNSPEC;
     73                as = getaddrinfo_async(is->hostname, NULL, &hints, NULL);
     74                event_asr_run(as, dns_done_host, is);
     75        } else
     76                icbd_log(is, LOG_WARNING, "reverse dns resolution failed: %s",
     77                    gai_strerror(ar->ar_gai_errno));
     78}
     79
     80void
     81dns_resolve(struct icb_session *is, struct sockaddr *sa)
    5982{
    6083        struct asr_query *as;
     
    6891        as = getnameinfo_async(sa, sa->sa_len, is->hostname,
    6992            sizeof is->hostname, NULL, 0, NI_NOFQDN, NULL);
    70         event_asr_run(as, dns_done, is);
     93        event_asr_run(as, dns_done_reverse, is);
    7194}
     95
  • icbd.c

    rd45051e r9440414  
    608608            is->host, sizeof is->host);
    609609
    610         dns_rresolv(is, (struct sockaddr *)&ss);
    611 }
     610        dns_resolve(is, (struct sockaddr *)&ss);
     611}
  • icbd.h

    rd45051e r9440414  
    3333/* dns.c */
    3434struct sockaddr;
    35 void            dns_rresolv(struct icb_session *, struct sockaddr *);
     35void            dns_resolve(struct icb_session *, struct sockaddr *);
    3636
    3737/* logger.c */
Note: See TracChangeset for help on using the changeset viewer.