]> git.ipfire.org Git - thirdparty/tor.git/commitdiff
Port some mostly cosmetic eventdns changes from libevent
authorNick Mathewson <nickm@torproject.org>
Wed, 11 Feb 2009 17:22:29 +0000 (17:22 +0000)
committerNick Mathewson <nickm@torproject.org>
Wed, 11 Feb 2009 17:22:29 +0000 (17:22 +0000)
svn:r18492

src/or/dnsserv.c
src/or/eventdns.c
src/or/eventdns.h

index 36d072110de0fe0205e614fbdddf1dce53945013..1f964780e98cdcbdef39faa4db9b2949e2c17a10 100644 (file)
@@ -69,7 +69,7 @@ evdns_server_callback(struct evdns_server_request *req, void *_data)
              "handle one question at a time for now.  Skipping the extras.");
   }
   for (i = 0; i < req->nquestions; ++i) {
-    if (req->questions[i]->class != EVDNS_CLASS_INET)
+    if (req->questions[i]->dns_question_class != EVDNS_CLASS_INET)
       continue;
     switch (req->questions[i]->type) {
       case EVDNS_TYPE_A:
index 6d19c01a298ceac44667a34f96449ccddbfca66a..56e2855e5c239989e90c9b1a5b89c7d8bc6da9eb 100644 (file)
@@ -119,10 +119,11 @@ typedef int socklen_t;
 #endif
 
 /* for debugging possible memory leaks. */
-#define malloc(x) tor_malloc(x)
-#define realloc(x,y) tor_realloc((x),(y))
-#define free(x) tor_free(x)
-#define _free(x) _tor_free(x)
+#define mm_malloc(x) tor_malloc(x)
+#define mm_realloc(x,y) tor_realloc((x),(y))
+#define mm_free(x) tor_free(x)
+#define mm_strdup(x) tor_strdup(x)
+#define _mm_free(x) _tor_free(x)
 
 #undef MIN
 #define MIN(a,b) ((a)<(b)?(a):(b))
@@ -145,6 +146,7 @@ typedef unsigned int uint;
 /* which we bother recording */
 
 #define TYPE_A         EVDNS_TYPE_A
+#define TYPE_CNAME     5
 #define TYPE_PTR       EVDNS_TYPE_PTR
 #define TYPE_AAAA      EVDNS_TYPE_AAAA
 
@@ -152,7 +154,7 @@ typedef unsigned int uint;
 
 #define CLEAR(x) do { memset((x), 0, sizeof(*(x))); } while(0)
 
-struct request {
+struct evdns_request {
        u8 *request; /* the dns packet data */
        unsigned int request_len;
        int reissue_count;
@@ -165,11 +167,11 @@ struct request {
        /* elements used by the searching code */
        int search_index;
        struct search_state *search_state;
-       char *search_origname;  /* needs to be free()ed */
+       char *search_origname;  /* needs to be mm_free()ed */
        int search_flags;
 
        /* these objects are kept in a circular list */
-       struct request *next, *prev;
+       struct evdns_request *next, *prev;
 
        struct event timeout_event;
 
@@ -218,7 +220,7 @@ struct nameserver {
        char write_waiting;      /* true if we are waiting for EV_WRITE events */
 };
 
-static struct request *req_head = NULL, *req_waiting_head = NULL;
+static struct evdns_request *req_head = NULL, *req_waiting_head = NULL;
 static struct nameserver *server_head = NULL;
 
 /* Represents a local port where we're listening for DNS requests. Right now, */
@@ -314,18 +316,18 @@ static const struct timeval global_nameserver_timeouts[] = {{10, 0}, {60, 0}, {3
 static const int global_nameserver_timeouts_length = (int)(sizeof(global_nameserver_timeouts)/sizeof(struct timeval));
 
 static struct nameserver *nameserver_pick(void);
-static void evdns_request_insert(struct request *req, struct request **head);
+static void evdns_request_insert(struct evdns_request *req, struct evdns_request **head);
 static void nameserver_ready_callback(int fd, short events, void *arg);
 static int evdns_transmit(void);
-static int evdns_request_transmit(struct request *req);
+static int evdns_request_transmit(struct evdns_request *req);
 static void nameserver_send_probe(struct nameserver *const ns);
-static void search_request_finished(struct request *const);
-static int search_try_next(struct request *const req);
+static void search_request_finished(struct evdns_request *const);
+static int search_try_next(struct evdns_request *const req);
 static int search_request_new(int type, const char *const name, int flags, evdns_callback_type user_callback, void *user_arg);
 static void evdns_requests_pump_waiting_queue(void);
 static u16 transaction_id_pick(void);
-static struct request *request_new(int type, const char *name, int flags, evdns_callback_type callback, void *ptr);
-static void request_submit(struct request *req);
+static struct evdns_request *request_new(int type, const char *name, int flags, evdns_callback_type callback, void *ptr);
+static void request_submit(struct evdns_request *req);
 
 static int server_request_free(struct server_request *req);
 static void server_request_free_answers(struct server_request *req);
@@ -471,9 +473,9 @@ sockaddr_eq(const struct sockaddr *sa1, const struct sockaddr *sa2,
 /* This walks the list of inflight requests to find the */
 /* one with a matching transaction id. Returns NULL on */
 /* failure */
-static struct request *
+static struct evdns_request *
 request_find_from_trans_id(u16 trans_id) {
-       struct request *req = req_head, *const started_at = req_head;
+       struct evdns_request *req = req_head, *const started_at = req_head;
 
        if (req) {
                do {
@@ -528,7 +530,7 @@ nameserver_probe_failed(struct nameserver *const ns) {
 /* many packets have timed out etc */
 static void
 nameserver_failed(struct nameserver *const ns, const char *msg) {
-       struct request *req, *started_at;
+       struct evdns_request *req, *started_at;
        /* if this nameserver has already been marked as failed */
        /* then don't do anything */
        if (!ns->state) return;
@@ -588,7 +590,7 @@ nameserver_up(struct nameserver *const ns) {
 }
 
 static void
-request_trans_id_set(struct request *const req, const u16 trans_id) {
+request_trans_id_set(struct evdns_request *const req, const u16 trans_id) {
        req->trans_id = trans_id;
        *((u16 *) req->request) = htons(trans_id);
 }
@@ -597,7 +599,7 @@ request_trans_id_set(struct request *const req, const u16 trans_id) {
 /* head is a pointer to the head of the list it should be */
 /* removed from or NULL if the request isn't in a list. */
 static void
-request_finished(struct request *const req, struct request **head) {
+request_finished(struct evdns_request *const req, struct evdns_request **head) {
        if (head) {
                if (req->next == req) {
                        /* only item in the list */
@@ -619,14 +621,14 @@ request_finished(struct request *const req, struct request **head) {
 
        if (!req->request_appended) {
                /* need to free the request data on it's own */
-               free(req->request);
+               mm_free(req->request);
        } else {
                /* the request data is appended onto the header */
-               /* so everything gets free()ed when we: */
+               /* so everything gets mm_free()ed when we: */
        }
 
        CLEAR(req);
-       _free(req);
+       _mm_free(req);
 
        evdns_requests_pump_waiting_queue();
 }
@@ -638,7 +640,7 @@ request_finished(struct request *const req, struct request **head) {
 /* 0 ok */
 /* 1 failed/reissue is pointless */
 static int
-request_reissue(struct request *req) {
+request_reissue(struct evdns_request *req) {
        const struct nameserver *const last_ns = req->ns;
        /* the last nameserver should have been marked as failing */
        /* by the caller of this function, therefore pick will try */
@@ -664,7 +666,7 @@ static void
 evdns_requests_pump_waiting_queue(void) {
        while (global_requests_inflight < global_max_requests_inflight &&
                global_requests_waiting) {
-               struct request *req;
+               struct evdns_request *req;
                /* move a request from the waiting queue to the inflight queue */
                assert(req_waiting_head);
                if (req_waiting_head->next == req_waiting_head) {
@@ -691,7 +693,7 @@ evdns_requests_pump_waiting_queue(void) {
 }
 
 static void
-reply_callback(struct request *const req, u32 ttl, u32 err, struct reply *reply) {
+reply_callback(struct evdns_request *const req, u32 ttl, u32 err, struct reply *reply) {
        switch (req->request_type) {
        case TYPE_A:
                if (reply)
@@ -727,7 +729,7 @@ reply_callback(struct request *const req, u32 ttl, u32 err, struct reply *reply)
 
 /* this processes a parsed reply packet */
 static void
-reply_handle(struct request *const req, u16 flags, u32 ttl, struct reply *reply) {
+reply_handle(struct evdns_request *const req, u16 flags, u32 ttl, struct reply *reply) {
        int error;
        static const int error_codes[] = {DNS_ERR_FORMAT, DNS_ERR_SERVERFAILED, DNS_ERR_NOTEXIST, DNS_ERR_NOTIMPL, DNS_ERR_REFUSED};
 
@@ -862,7 +864,7 @@ reply_parse(u8 *packet, int length) {
        u16 flags = 0;
        u32 ttl, ttl_r = 0xffffffff;
        struct reply reply;
-       struct request *req = NULL;
+       struct evdns_request *req = NULL;
        unsigned int i;
        int name_matches = 0;
 
@@ -1030,7 +1032,7 @@ request_parse(u8 *packet, ssize_t length, struct evdns_server_port *port, struct
     if (length > INT_MAX)
         return -1;
 
-       server_req = malloc(sizeof(struct server_request));
+       server_req = mm_malloc(sizeof(struct server_request));
        if (server_req == NULL) return -1;
        memset(server_req, 0, sizeof(struct server_request));
 
@@ -1040,7 +1042,7 @@ request_parse(u8 *packet, ssize_t length, struct evdns_server_port *port, struct
 
        server_req->base.flags = flags;
        server_req->base.nquestions = 0;
-       server_req->base.questions = malloc(sizeof(struct evdns_server_question *) * questions);
+       server_req->base.questions = mm_malloc(sizeof(struct evdns_server_question *) * questions);
        if (server_req->base.questions == NULL)
                goto err;
 
@@ -1053,11 +1055,11 @@ request_parse(u8 *packet, ssize_t length, struct evdns_server_port *port, struct
                GET16(type);
                GET16(class);
                namelen = strlen(tmp_name);
-               q = malloc(sizeof(struct evdns_server_question) + namelen);
+               q = mm_malloc(sizeof(struct evdns_server_question) + namelen);
                if (!q)
                        goto err;
                q->type = type;
-               q->class = class;
+               q->dns_question_class = class;
                memcpy(q->name, tmp_name, namelen+1);
                server_req->base.questions[server_req->base.nquestions++] = q;
        }
@@ -1080,11 +1082,11 @@ err:
        if (server_req) {
                if (server_req->base.questions) {
                        for (i = 0; i < server_req->base.nquestions; ++i)
-                               free(server_req->base.questions[i]);
-                       free(server_req->base.questions);
+                               mm_free(server_req->base.questions[i]);
+                       mm_free(server_req->base.questions);
                }
                CLEAR(server_req);
-               free(server_req);
+               mm_free(server_req);
        }
        return -1;
 
@@ -1176,7 +1178,7 @@ evdns_set_random_bytes_fn(void (*fn)(char *, size_t))
 static u16
 transaction_id_pick(void) {
        for (;;) {
-               const struct request *req = req_head, *started_at;
+               const struct evdns_request *req = req_head, *started_at;
                u16 trans_id = trans_id_function();
 
                if (trans_id == 0xffff) continue;
@@ -1392,7 +1394,7 @@ dnslabel_clear(struct dnslabel_table *table)
 {
        int i;
        for (i = 0; i < table->n_labels; ++i)
-               free(table->labels[i].v);
+               mm_free(table->labels[i].v);
        table->n_labels = 0;
 }
 
@@ -1421,7 +1423,7 @@ dnslabel_table_add(struct dnslabel_table *table, const char *label, off_t pos)
        int p;
        if (table->n_labels == MAX_LABELS)
                return (-1);
-       v = strdup(label);
+       v = mm_strdup(label);
        if (v == NULL)
                return (-1);
        p = table->n_labels++;
@@ -1554,7 +1556,7 @@ struct evdns_server_port *
 evdns_add_server_port(int socket, int is_tcp, evdns_request_callback_fn_type cb, void *user_data)
 {
        struct evdns_server_port *port;
-       if (!(port = malloc(sizeof(struct evdns_server_port))))
+       if (!(port = mm_malloc(sizeof(struct evdns_server_port))))
                return NULL;
        memset(port, 0, sizeof(struct evdns_server_port));
 
@@ -1570,7 +1572,7 @@ evdns_add_server_port(int socket, int is_tcp, evdns_request_callback_fn_type cb,
        event_set(&port->event, port->socket, EV_READ | EV_PERSIST,
                          server_port_ready_callback, port);
        if (event_add(&port->event, NULL)<0) {
-               free(port);
+               mm_free(port);
                return NULL;
        }
        return port;
@@ -1615,14 +1617,14 @@ evdns_server_request_add_reply(struct evdns_server_request *_req, int section, c
        while (*itemp) {
                itemp = &((*itemp)->next);
        }
-       item = malloc(sizeof(struct server_reply_item));
+       item = mm_malloc(sizeof(struct server_reply_item));
        if (!item)
                return -1;
        CLEAR(item);
        item->next = NULL;
-       if (!(item->name = strdup(name))) {
+       if (!(item->name = mm_strdup(name))) {
                CLEAR(item);
-               free(item);
+               mm_free(item);
                return -1;
        }
        item->type = type;
@@ -1633,18 +1635,18 @@ evdns_server_request_add_reply(struct evdns_server_request *_req, int section, c
        item->data = NULL;
        if (data) {
                if (item->is_name) {
-                       if (!(item->data = strdup(data))) {
-                               free(item->name);
+                       if (!(item->data = mm_strdup(data))) {
+                               mm_free(item->name);
                                CLEAR(item);
-                               free(item);
+                               mm_free(item);
                                return -1;
                        }
                        item->datalen = (u16)-1;
                } else {
-                       if (!(item->data = malloc(datalen))) {
-                               free(item->name);
+                       if (!(item->data = mm_malloc(datalen))) {
+                               mm_free(item->name);
                                CLEAR(item);
-                               free(item);
+                               mm_free(item);
                                return -1;
                        }
                        item->datalen = datalen;
@@ -1702,7 +1704,7 @@ int
 evdns_server_request_add_cname_reply(struct evdns_server_request *req, const char *name, const char *cname, int ttl)
 {
        return evdns_server_request_add_reply(
-                 req, EVDNS_ANSWER_SECTION, name, TYPE_A, CLASS_INET,
+                 req, EVDNS_ANSWER_SECTION, name, TYPE_CNAME, CLASS_INET,
                  ttl, -1, 1, cname);
 }
 
@@ -1743,7 +1745,7 @@ evdns_server_request_format_response(struct server_request *req, int err)
                        return (int) j;
                }
                APPEND16(req->base.questions[i]->type);
-               APPEND16(req->base.questions[i]->class);
+               APPEND16(req->base.questions[i]->dns_question_class);
        }
 
        /* Add answer, authority, and additional sections. */
@@ -1793,7 +1795,7 @@ overflow:
 
        req->response_len = (size_t)j;
 
-       if (!(req->response = malloc(req->response_len))) {
+       if (!(req->response = mm_malloc(req->response_len))) {
                server_request_free_answers(req);
                dnslabel_clear(&table);
                return (-1);
@@ -1871,10 +1873,10 @@ server_request_free_answers(struct server_request *req)
                victim = *list;
                while (victim) {
                        next = victim->next;
-                       free(victim->name);
+                       mm_free(victim->name);
                        if (victim->data)
-                               free(victim->data);
-                       free(victim);
+                               mm_free(victim->data);
+                       mm_free(victim);
                        victim = next;
                }
                *list = NULL;
@@ -1889,8 +1891,8 @@ server_request_free(struct server_request *req)
        int i, rc=1;
        if (req->base.questions) {
                for (i = 0; i < req->base.nquestions; ++i)
-                       free(req->base.questions[i]);
-               free(req->base.questions);
+                       mm_free(req->base.questions[i]);
+               mm_free(req->base.questions);
        }
 
        if (req->port) {
@@ -1904,7 +1906,7 @@ server_request_free(struct server_request *req)
        }
 
        if (req->response) {
-               free(req->response);
+               mm_free(req->response);
        }
 
        server_request_free_answers(req);
@@ -1917,11 +1919,11 @@ server_request_free(struct server_request *req)
        if (rc == 0) {
                server_port_free(req->port);
                CLEAR(req);
-               free(req);
+               mm_free(req);
                return (1);
        }
        CLEAR(req);
-       free(req);
+       mm_free(req);
        return (0);
 }
 
@@ -1940,7 +1942,7 @@ server_port_free(struct evdns_server_port *port)
        (void) event_del(&port->event);
        CLEAR(&port->event);
        CLEAR(port);
-       free(port);
+       mm_free(port);
 }
 
 /* exported function */
@@ -1970,7 +1972,7 @@ evdns_server_request_get_requesting_addr(struct evdns_server_request *_req, stru
 /* has timed out. */
 static void
 evdns_request_timeout_callback(int fd, short events, void *arg) {
-       struct request *const req = (struct request *) arg;
+       struct evdns_request *const req = (struct evdns_request *) arg;
        (void) fd;
        (void) events;
 
@@ -2001,7 +2003,7 @@ evdns_request_timeout_callback(int fd, short events, void *arg) {
 /* 1 temporary failure */
 /* 2 other failure */
 static int
-evdns_request_transmit_to(struct request *req, struct nameserver *server) {
+evdns_request_transmit_to(struct evdns_request *req, struct nameserver *server) {
        const ssize_t r = send(server->socket, req->request, req->request_len, 0);
        if (r < 0) {
                int err = last_error(server->socket);
@@ -2022,7 +2024,7 @@ evdns_request_transmit_to(struct request *req, struct nameserver *server) {
 /* 0 ok */
 /* 1 failed */
 static int
-evdns_request_transmit(struct request *req) {
+evdns_request_transmit(struct evdns_request *req) {
        int retcode = 0, r;
 
        /* if we fail to send this packet then this flag marks it */
@@ -2087,26 +2089,26 @@ nameserver_probe_callback(int result, char type, int count, int ttl, void *addre
                        break;
        }
 
-       free(addr);
+       mm_free(addr);
 }
 
 static void
 nameserver_send_probe(struct nameserver *const ns) {
-       struct request *req;
+       struct evdns_request *req;
        struct sockaddr_storage *addr;
        /* here we need to send a probe to a given nameserver */
        /* in the hope that it is up now. */
 
        /* We identify the nameserver by its address, in case it is removed before
         * our probe comes back. */
-       addr = malloc(sizeof(struct sockaddr_storage));
+       addr = mm_malloc(sizeof(struct sockaddr_storage));
        memcpy(addr, &ns->address, sizeof(struct sockaddr_storage));
 
        log(EVDNS_LOG_DEBUG, "Sending probe to %s", debug_ntop((struct sockaddr *)&ns->address));
 
        req = request_new(TYPE_A, "www.google.com", DNS_QUERY_NO_SEARCH, nameserver_probe_callback, addr);
        if (!req) {
-               free(addr);
+               mm_free(addr);
                return;
        }
        /* we force this into the inflight queue no matter what */
@@ -2123,7 +2125,7 @@ evdns_transmit(void) {
        char did_try_to_transmit = 0;
 
        if (req_head) {
-               struct request *const started_at = req_head, *req = req_head;
+               struct evdns_request *const started_at = req_head, *req = req_head;
                /* first transmit all the requests which are currently waiting */
                do {
                        if (req->transmit_me) {
@@ -2158,7 +2160,7 @@ int
 evdns_clear_nameservers_and_suspend(void)
 {
        struct nameserver *server = server_head, *started_at = server_head;
-       struct request *req = req_head, *req_started_at = req_head;
+       struct evdns_request *req = req_head, *req_started_at = req_head;
 
        if (!server)
                return 0;
@@ -2171,7 +2173,7 @@ evdns_clear_nameservers_and_suspend(void)
                if (server->socket >= 0)
                        CLOSE_SOCKET(server->socket);
                CLEAR(server);
-               free(server);
+               mm_free(server);
                if (next == started_at)
                        break;
                server = next;
@@ -2180,7 +2182,7 @@ evdns_clear_nameservers_and_suspend(void)
        global_good_nameservers = 0;
 
        while (req) {
-               struct request *next = req->next;
+               struct evdns_request *next = req->next;
                req->tx_count = req->reissue_count = 0;
                req->ns = NULL;
                /* ???? What to do about searches? */
@@ -2256,7 +2258,7 @@ _evdns_nameserver_add_impl(const struct sockaddr *address,
                return 2;
        }
 
-       ns = (struct nameserver *) malloc(sizeof(struct nameserver));
+       ns = (struct nameserver *) mm_malloc(sizeof(struct nameserver));
        if (!ns) return -1;
 
        memset(ns, 0, sizeof(struct nameserver));
@@ -2319,7 +2321,7 @@ out2:
        CLOSE_SOCKET(ns->socket);
 out1:
        CLEAR(ns);
-       free(ns);
+       mm_free(ns);
        log(EVDNS_LOG_WARN, "Unable to add nameserver %s: error %d", debug_ntop(address), err);
        return err;
 }
@@ -2447,7 +2449,7 @@ evdns_nameserver_sockaddr_add(const struct sockaddr *sa, socklen_t len)
 
 /* insert into the tail of the queue */
 static void
-evdns_request_insert(struct request *req, struct request **head) {
+evdns_request_insert(struct evdns_request *req, struct evdns_request **head) {
        if (!*head) {
                *head = req;
                req->next = req->prev = req;
@@ -2470,7 +2472,7 @@ string_num_dots(const char *s) {
        return count;
 }
 
-static struct request *
+static struct evdns_request *
 request_new(int type, const char *name, int flags,
        evdns_callback_type callback, void *user_ptr) {
        const char issuing_now =
@@ -2480,8 +2482,8 @@ request_new(int type, const char *name, int flags,
        const size_t request_max_len = evdns_request_len(name_len);
        const u16 trans_id = issuing_now ? transaction_id_pick() : 0xffff;
        /* the request data is alloced in a single block with the header */
-       struct request *const req =
-               (struct request *) malloc(sizeof(struct request) + request_max_len);
+       struct evdns_request *const req =
+               (struct evdns_request *) mm_malloc(sizeof(struct evdns_request) + request_max_len);
        char namebuf[256];
        int rlen;
        (void) flags;
@@ -2489,11 +2491,11 @@ request_new(int type, const char *name, int flags,
        if (!req) return NULL;
 
        if (name_len >= sizeof(namebuf)) {
-               _free(req);
+               _mm_free(req);
                return NULL;
        }
 
-       memset(req, 0, sizeof(struct request));
+       memset(req, 0, sizeof(struct evdns_request));
 
        if (global_randomize_case) {
                unsigned i;
@@ -2512,8 +2514,8 @@ request_new(int type, const char *name, int flags,
        }
 
        /* request data lives just after the header */
-       req->request = ((u8 *) req) + sizeof(struct request);
-       /* denotes that the request data shouldn't be free()ed */
+       req->request = ((u8 *) req) + sizeof(struct evdns_request);
+       /* denotes that the request data shouldn't be mm_free()ed */
        req->request_appended = 1;
        rlen = evdns_request_data_build(name, name_len, trans_id,
                                                        type, CLASS_INET, req->request, request_max_len);
@@ -2531,12 +2533,12 @@ request_new(int type, const char *name, int flags,
        return req;
 err1:
        CLEAR(req);
-       _free(req);
+       _mm_free(req);
        return NULL;
 }
 
 static void
-request_submit(struct request *const req) {
+request_submit(struct evdns_request *const req) {
        if (req->ns) {
                /* if it has a nameserver assigned then this is going */
                /* straight into the inflight queue */
@@ -2554,7 +2556,7 @@ int evdns_resolve_ipv4(const char *name, int flags,
                                           evdns_callback_type callback, void *ptr) {
        log(EVDNS_LOG_DEBUG, "Resolve requested for %s", name);
        if (flags & DNS_QUERY_NO_SEARCH) {
-               struct request *const req =
+               struct evdns_request *const req =
                        request_new(TYPE_A, name, flags, callback, ptr);
                if (req == NULL)
                        return (1);
@@ -2570,7 +2572,7 @@ int evdns_resolve_ipv6(const char *name, int flags,
                                           evdns_callback_type callback, void *ptr) {
        log(EVDNS_LOG_DEBUG, "Resolve requested for %s", name);
        if (flags & DNS_QUERY_NO_SEARCH) {
-               struct request *const req =
+               struct evdns_request *const req =
                        request_new(TYPE_AAAA, name, flags, callback, ptr);
                if (req == NULL)
                        return (1);
@@ -2583,7 +2585,7 @@ int evdns_resolve_ipv6(const char *name, int flags,
 
 int evdns_resolve_reverse(const struct in_addr *in, int flags, evdns_callback_type callback, void *ptr) {
        char buf[32];
-       struct request *req;
+       struct evdns_request *req;
        u32 a;
        assert(in);
        a = ntohl(in->s_addr);
@@ -2603,7 +2605,7 @@ int evdns_resolve_reverse_ipv6(const struct in6_addr *in, int flags, evdns_callb
        /* 32 nybbles, 32 periods, "ip6.arpa", NUL. */
        char buf[73];
        char *cp;
-       struct request *req;
+       struct evdns_request *req;
        int i;
        assert(in);
        cp = buf;
@@ -2660,16 +2662,16 @@ search_state_decref(struct search_state *const state) {
                for (dom = state->head; dom; dom = next) {
                        next = dom->next;
                        CLEAR(dom);
-                       _free(dom);
+                       _mm_free(dom);
                }
                CLEAR(state);
-               _free(state);
+               _mm_free(state);
        }
 }
 
 static struct search_state *
 search_state_new(void) {
-       struct search_state *state = (struct search_state *) malloc(sizeof(struct search_state));
+       struct search_state *state = (struct search_state *) mm_malloc(sizeof(struct search_state));
        if (!state) return NULL;
        memset(state, 0, sizeof(struct search_state));
        state->refcount = 1;
@@ -2702,7 +2704,7 @@ search_postfix_add(const char *domain) {
                if (!global_search_state) return;
        global_search_state->num_domains++;
 
-       sdomain = (struct search_domain *) malloc(sizeof(struct search_domain) + domain_len);
+       sdomain = (struct search_domain *) mm_malloc(sizeof(struct search_domain) + domain_len);
                if (!sdomain) return;
        memcpy( ((u8 *) sdomain) + sizeof(struct search_domain), domain, domain_len);
        sdomain->next = global_search_state->head;
@@ -2765,7 +2767,7 @@ search_make_new(const struct search_state *const state, int n, const char *const
                        /* the actual postfix string is kept at the end of the structure */
                        const u8 *const postfix = ((u8 *) dom) + sizeof(struct search_domain);
                        const size_t postfix_len = dom->len;
-                       char *const newname = (char *) malloc(base_len + need_to_append_dot + postfix_len + 1);
+                       char *const newname = (char *) mm_malloc(base_len + need_to_append_dot + postfix_len + 1);
                        if (!newname) return NULL;
                        memcpy(newname, base_name, base_len);
                        if (need_to_append_dot) newname[base_len] = '.';
@@ -2787,7 +2789,7 @@ search_request_new(int type, const char *const name, int flags, evdns_callback_t
                 global_search_state &&
                 global_search_state->num_domains) {
                /* we have some domains to search */
-               struct request *req;
+               struct evdns_request *req;
                if (string_num_dots(name) >= global_search_state->ndots) {
                        req = request_new(type, name, flags, user_callback, user_arg);
                        if (!req) return 1;
@@ -2796,18 +2798,18 @@ search_request_new(int type, const char *const name, int flags, evdns_callback_t
                        char *const new_name = search_make_new(global_search_state, 0, name);
                                                if (!new_name) return 1;
                        req = request_new(type, new_name, flags, user_callback, user_arg);
-                       _free(new_name);
+                       _mm_free(new_name);
                        if (!req) return 1;
                        req->search_index = 0;
                }
-               req->search_origname = strdup(name);
+               req->search_origname = mm_strdup(name);
                req->search_state = global_search_state;
                req->search_flags = flags;
                global_search_state->refcount++;
                request_submit(req);
                return 0;
        } else {
-               struct request *const req = request_new(type, name, flags, user_callback, user_arg);
+               struct evdns_request *const req = request_new(type, name, flags, user_callback, user_arg);
                if (!req) return 1;
                request_submit(req);
                return 0;
@@ -2820,18 +2822,18 @@ search_request_new(int type, const char *const name, int flags, evdns_callback_t
 /* 0 another request has been submitted */
 /* 1 no more requests needed */
 static int
-search_try_next(struct request *const req) {
+search_try_next(struct evdns_request *const req) {
        if (req->search_state) {
                /* it is part of a search */
                char *new_name;
-               struct request *newreq;
+               struct evdns_request *newreq;
                req->search_index++;
                if (req->search_index >= req->search_state->num_domains) {
                        /* no more postfixes to try, however we may need to try */
                        /* this name without a postfix */
                        if (string_num_dots(req->search_origname) < req->search_state->ndots) {
                                /* yep, we need to try it raw */
-                               struct request *const newreq = request_new(req->request_type, req->search_origname, req->search_flags, req->user_callback, req->user_pointer);
+                               struct evdns_request *const newreq = request_new(req->request_type, req->search_origname, req->search_flags, req->user_callback, req->user_pointer);
                                log(EVDNS_LOG_DEBUG, "Search: trying raw query %s", req->search_origname);
                                if (newreq) {
                                        request_submit(newreq);
@@ -2845,7 +2847,7 @@ search_try_next(struct request *const req) {
                                if (!new_name) return 1;
                log(EVDNS_LOG_DEBUG, "Search: now trying %s (%d)", new_name, req->search_index);
                newreq = request_new(req->request_type, new_name, req->search_flags, req->user_callback, req->user_pointer);
-               free(new_name);
+               mm_free(new_name);
                if (!newreq) return 1;
                newreq->search_origname = req->search_origname;
                req->search_origname = NULL;
@@ -2860,13 +2862,13 @@ search_try_next(struct request *const req) {
 }
 
 static void
-search_request_finished(struct request *const req) {
+search_request_finished(struct evdns_request *const req) {
        if (req->search_state) {
                search_state_decref(req->search_state);
                req->search_state = NULL;
        }
        if (req->search_origname) {
-               free(req->search_origname);
+               mm_free(req->search_origname);
                req->search_origname = NULL;
        }
 }
@@ -3029,7 +3031,7 @@ evdns_resolv_conf_parse(int flags, const char *const filename) {
        }
        if (st.st_size > 65535) { err = 3; goto out1; }  /* no resolv.conf should be any bigger */
 
-       resolv = (u8 *) malloc((size_t)st.st_size + 1);
+       resolv = (u8 *) mm_malloc((size_t)st.st_size + 1);
        if (!resolv) { err = 4; goto out1; }
 
     n = 0;
@@ -3065,7 +3067,7 @@ evdns_resolv_conf_parse(int flags, const char *const filename) {
        }
 
 out2:
-       free(resolv);
+       mm_free(resolv);
 out1:
        close(fd);
        return err;
@@ -3084,12 +3086,12 @@ evdns_nameserver_ip_add_line(const char *ips) {
                addr = ips;
                while (ISDIGIT(*ips) || *ips == '.' || *ips == ':' || *ips == '[' || *ips == ']')
                        ++ips;
-               buf = malloc(ips-addr+1);
+               buf = mm_malloc(ips-addr+1);
                if (!buf) return 4;
                memcpy(buf, addr, ips-addr);
                buf[ips-addr] = '\0';
                r = evdns_nameserver_ip_add(buf);
-               free(buf);
+               mm_free(buf);
                if (r) return r;
        }
        return 0;
@@ -3125,7 +3127,7 @@ load_nameservers_with_getnetworkparams(void)
                goto done;
        }
 
-       buf = malloc(size);
+       buf = mm_malloc(size);
        if (!buf) { status = 4; goto done; }
        fixed = buf;
        r = fn(fixed, &size);
@@ -3134,8 +3136,8 @@ load_nameservers_with_getnetworkparams(void)
                goto done;
        }
        if (r != ERROR_SUCCESS) {
-               free(buf);
-               buf = malloc(size);
+               mm_free(buf);
+               buf = mm_malloc(size);
                if (!buf) { status = 4; goto done; }
                fixed = buf;
                r = fn(fixed, &size);
@@ -3174,7 +3176,7 @@ load_nameservers_with_getnetworkparams(void)
 
  done:
        if (buf)
-               free(buf);
+               mm_free(buf);
        if (handle)
                FreeLibrary(handle);
        return status;
@@ -3190,7 +3192,7 @@ config_nameserver_from_reg_key(HKEY key, const char *subkey)
        if (RegQueryValueEx(key, subkey, 0, &type, NULL, &bufsz)
                != ERROR_MORE_DATA)
                return -1;
-       if (!(buf = malloc(bufsz)))
+       if (!(buf = mm_malloc(bufsz)))
                return -1;
 
        if (RegQueryValueEx(key, subkey, 0, &type, (LPBYTE)buf, &bufsz)
@@ -3198,7 +3200,7 @@ config_nameserver_from_reg_key(HKEY key, const char *subkey)
                status = evdns_nameserver_ip_add_line(buf);
        }
 
-       free(buf);
+       mm_free(buf);
        return status;
 }
 
@@ -3327,7 +3329,7 @@ evdns_shutdown(int fail_requests)
                if (server->state == 0)
                        (void) event_del(&server->timeout_event);
                CLEAR(server);
-               free(server);
+               mm_free(server);
                if (server_next == server_head)
                        break;
        }
@@ -3338,10 +3340,10 @@ evdns_shutdown(int fail_requests)
                for (dom = global_search_state->head; dom; dom = dom_next) {
                        dom_next = dom->next;
                        CLEAR(dom);
-                       free(dom);
+                       mm_free(dom);
                }
                CLEAR(global_search_state);
-               free(global_search_state);
+               mm_free(global_search_state);
                global_search_state = NULL;
        }
        evdns_log_fn = NULL;
@@ -3375,20 +3377,20 @@ evdns_server_callback(struct evdns_server_request *req, void *data)
        for (i = 0; i < req->nquestions; ++i) {
                u32 ans = htonl(0xc0a80b0bUL);
                if (req->questions[i]->type == EVDNS_TYPE_A &&
-                       req->questions[i]->class == EVDNS_CLASS_INET) {
+                       req->questions[i]->dns_question_class == EVDNS_CLASS_INET) {
                        printf(" -- replying for %s (A)\n", req->questions[i]->name);
                        r = evdns_server_request_add_a_reply(req, req->questions[i]->name,
                                                                                  1, &ans, 10);
                        if (r<0)
                                printf("eeep, didn't work.\n");
                } else if (req->questions[i]->type == EVDNS_TYPE_PTR &&
-                                  req->questions[i]->class == EVDNS_CLASS_INET) {
+                                  req->questions[i]->dns_question_class == EVDNS_CLASS_INET) {
                        printf(" -- replying for %s (PTR)\n", req->questions[i]->name);
                        r = evdns_server_request_add_ptr_reply(req, NULL, req->questions[i]->name,
                                                                                        "foo.bar.example.com", 10);
                } else {
                        printf(" -- skipping %s [%d %d]\n", req->questions[i]->name,
-                                  req->questions[i]->type, req->questions[i]->class);
+                                  req->questions[i]->type, req->questions[i]->dns_question_class);
                }
        }
 
index d3d359d2fbde62c30ecfd33a4bec336cf0026095..734bacf2d28b4e1b25ab6045ea58f8368cd6910c 100644 (file)
@@ -297,7 +297,7 @@ struct evdns_server_request {
 };
 struct evdns_server_question {
        int type;
-       int class;
+       int dns_question_class;
        char name[1];
 };
 typedef void (*evdns_request_callback_fn_type)(struct evdns_server_request *, void *);