]> jfr.im git - irc/atheme/libmowgli-2.git/commitdiff
dns: some optimisations and shuffling.
authorElizabeth J. Myers <redacted>
Sun, 1 Apr 2012 03:14:34 +0000 (22:14 -0500)
committerElizabeth J. Myers <redacted>
Sun, 1 Apr 2012 03:14:34 +0000 (22:14 -0500)
Note the mowgli_dns_init function now takes a const mowgli_ops_t * ptr
to specify custom ops.

src/libmowgli/dns/dns.c
src/libmowgli/dns/dns.h
src/libmowgli/dns/dns_evloop_res.c
src/libmowgli/dns/dns_evloop_res.h

index 4a598c7a10512b87b485cc4053c8ea9512ac587e..eff508008910462074488e4b25b38f84a2ee080f 100644 (file)
@@ -23,7 +23,7 @@
 mowgli_dns_t * mowgli_dns_create(mowgli_eventloop_t *eventloop, int implementation)
 {
        mowgli_dns_t *dns = mowgli_alloc(sizeof(mowgli_dns_t));
-       mowgli_dns_ops_t *ops;
+       const mowgli_dns_ops_t *ops;
 
        switch (implementation)
        {
@@ -35,9 +35,7 @@ mowgli_dns_t * mowgli_dns_create(mowgli_eventloop_t *eventloop, int implementati
                break;
        }
 
-       dns->dns_ops = ops;
-
-       if (mowgli_dns_init(dns, eventloop) != 0)
+       if (mowgli_dns_init(dns, eventloop, ops) != 0)
        {
                mowgli_free(dns);
                return NULL;
@@ -46,10 +44,11 @@ mowgli_dns_t * mowgli_dns_create(mowgli_eventloop_t *eventloop, int implementati
        return dns;
 }
 
-int mowgli_dns_init(mowgli_dns_t *dns, mowgli_eventloop_t *eventloop)
+int mowgli_dns_init(mowgli_dns_t *dns, mowgli_eventloop_t *eventloop, const mowgli_dns_ops_t *ops)
 {
        return_val_if_fail(dns != NULL, -1);
-       return_val_if_fail(dns->dns_ops != NULL, -1);
+
+       dns->dns_ops = ops;
 
        return dns->dns_ops->mowgli_dns_init_func_t(dns, eventloop);
 }
index 03a8f1b136c0543cf845e0264588a4d376ef3abd..9cbb6eed4aa39614e8fdc2068ca6a54635abcae8 100644 (file)
 
 #include "mowgli.h"
 
+/* Longest hostname we're willing to work with */
+#define MOWGLI_DNS_RES_HOSTLEN 512
+
+/* Resolver types */
 #define MOWGLI_DNS_TYPE_CUSTOM 0
 #define MOWGLI_DNS_TYPE_ASYNC  1
 #define MOWGLI_DNS_TYPE_HELPER 2
 
+/* Lookup types */
 #define MOWGLI_DNS_T_A 1
 #define MOWGLI_DNS_T_AAAA 28
 #define MOWGLI_DNS_T_PTR 12
@@ -36,6 +41,7 @@
 #define MOWGLI_DNS_T_SSHFP 44
 #define MOWGLI_DNS_T_NULL 10
 
+/* Return codes */
 #define MOWGLI_DNS_RES_SUCCESS 0
 #define MOWGLI_DNS_RES_NXDOMAIN 1
 #define MOWGLI_DNS_RES_INVALID 2
@@ -64,7 +70,7 @@ struct _mowgli_dns_reply_t
 struct _mowgli_dns_t
 {
        int dns_type;
-       mowgli_dns_ops_t *dns_ops;
+       const mowgli_dns_ops_t *dns_ops;
        void *dns_state;
 };
 
@@ -75,7 +81,7 @@ struct _mowgli_dns_query_t
 };
 
 extern mowgli_dns_t * mowgli_dns_create(mowgli_eventloop_t *eventloop, int implementation);
-extern int mowgli_dns_init(mowgli_dns_t *dns, mowgli_eventloop_t *eventloop);
+extern int mowgli_dns_init(mowgli_dns_t *dns, mowgli_eventloop_t *eventloop, const mowgli_dns_ops_t *ops);
 extern void mowgli_dns_destroy(mowgli_dns_t *dns);
 extern int mowgli_dns_restart(mowgli_dns_t *dns);
 extern void mowgli_dns_delete_query(mowgli_dns_t *dns, const mowgli_dns_query_t *query);
index a18fcc50bacc85e1615b8564c7127f1aba901323..586be482070ccf6d9a664d679c59092b35e4fb21 100644 (file)
@@ -1002,7 +1002,7 @@ static void res_readreply(mowgli_eventloop_t *eventloop, mowgli_eventloop_io_t *
 }
 
 /* DNS ops for this resolver */
-mowgli_dns_ops_t mowgli_dns_evloop_resolver = {
+const mowgli_dns_ops_t mowgli_dns_evloop_resolver = {
        .mowgli_dns_init_func_t = mowgli_dns_evloop_init,
        .mowgli_dns_fini_func_t = mowgli_dns_evloop_destroy,
        .mowgli_dns_restart_func_t = mowgli_dns_evloop_restart,
index 73485d874a0abef3256f03496fd8dee49eac33ce..3973533ba904d619e7d8d7057ddf81f91383db25 100644 (file)
@@ -11,9 +11,6 @@
 /* Maximum number of nameservers we track */
 #define MOWGLI_DNS_MAXNS 10
 
-/* Longest hostname we're willing to work with */
-#define MOWGLI_DNS_RES_HOSTLEN 512
-
 typedef struct
 {
        mowgli_vio_sockaddr_t nsaddr_list[MOWGLI_DNS_MAXNS];
@@ -42,6 +39,6 @@ extern void mowgli_dns_evloop_gethost_byname(mowgli_dns_t *dns, const char *, mo
 extern void mowgli_dns_evloop_gethost_byaddr(mowgli_dns_t *dns, const struct sockaddr_storage *, mowgli_dns_query_t *);
 extern void mowgli_dns_evloop_add_local_domain(mowgli_dns_t *dns, char *, size_t);
 
-extern mowgli_dns_ops_t mowgli_dns_evloop_resolver;
+extern const mowgli_dns_ops_t mowgli_dns_evloop_resolver;
 
 #endif