changeset 388:2354a1944e49

start parsing spf txt records
author Carl Byington <carl@five-ten-sg.com>
date Mon, 06 Mar 2017 16:22:15 -0800
parents 616e46e9b8f0
children aa9795b407e8
files src/context.cpp src/dnsbl.cpp
diffstat 2 files changed, 12 insertions(+), 12 deletions(-) [+]
line wrap: on
line diff
--- a/src/context.cpp	Mon Mar 06 15:41:14 2017 -0800
+++ b/src/context.cpp	Mon Mar 06 16:22:15 2017 -0800
@@ -1140,19 +1140,18 @@
             if (s) *s = '\0';
             in_addr ipx;
             if (inet_aton(p, &ipx)) {
-                if (s) {
-                    int mask = atoi(s+1);
+                uint32_t ipy = htonl(ipx.s_addr);
+                int mask = (s) ? atoi(s+1) : 32;
                     if ((mask >= 16) && (mask <= 32)) {
-                        int low = (1 << (32-mask)) - 1;
-                        ipx.s_addr &= low ^ 0xffffffff;
-                        if ((ip >= ipx.s_addr) && (ip <= ipx.s_addr + low)) {
+                    uint32_t low = (1 << (32-mask)) - 1;
+                    ipy &= low ^ 0xffffffff;
+                    if ((ipy <= ip) && (ip <= ipy + low)) {
                             log(priv->queueid, "match %s", p);
                             if (s) log(priv->queueid, "match /%s", s+1);
                             return true;
                         }
                     }
                 }
-            }
             if (b) *b = ' ';
             if (s) *s = '/';
             p = (b) ? b+1 : e;
--- a/src/dnsbl.cpp	Mon Mar 06 15:41:14 2017 -0800
+++ b/src/dnsbl.cpp	Mon Mar 06 16:22:15 2017 -0800
@@ -887,11 +887,12 @@
 
         // find the answer
 #ifdef NS_PACKETSZ
-        int res_result = res_query(question+1, ns_c_in, int8_t(question[0]), glom.answer, sizeof(glom.answer));
+        int qt = int8_t(question[0]);
+        int res_result = res_query(question+1, ns_c_in, qt, glom.answer, sizeof(glom.answer));
         //#ifdef RESOLVER_DEBUG
             char text[1000];
             snprintf(text, sizeof(text), "process_resolver_requests() has a question %s qtype %d buf len %d result %d",
-                                         question+1, int8_t(question[0]), sizeof(glom.answer), res_result);
+                                         question+1, qt, sizeof(glom.answer), res_result);
             my_syslog(text);
         //#endif
         if (res_result < 0) glom.length = 0;   // represent all errors as zero length answers