chiark / gitweb /
site: Break out separate function for decrypting msg0
[secnet.git] / resolver.c
index f60b11282e0bbdc41ba5830414903a3ecb0a3479..033ddc113aa37466015b8124016ba00d062e81fa 100644 (file)
@@ -6,6 +6,8 @@
 #error secnet requires ADNS version 1.0 or above
 #endif
 #include <adns.h>
+#include <arpa/inet.h>
+#include <string.h>
 
 
 struct adns {
@@ -28,6 +30,20 @@ static bool_t resolve_request(void *sst, cstring_t name,
     struct adns *st=sst;
     struct query *q;
     int rv;
+    const int maxlitlen=50;
+
+    ssize_t l=strlen(name);
+    if (name[0]=='[' && l<maxlitlen && l>2 && name[l-1]==']') {
+       char trimmed[maxlitlen+1];
+       memcpy(trimmed,name+1,l-2);
+       trimmed[l-2]=0;
+       struct in_addr ia;
+       if (inet_aton(trimmed,&ia))
+           cb(cst,&ia);
+       else
+           cb(cst,0);
+       return True;
+    }
 
     q=safe_malloc(sizeof *q,"resolve_request");
     q->cst=cst;