From ab157baf15984b6e967c3fadf9784e3a7c92fc36 Mon Sep 17 00:00:00 2001
From: Joel Grunbaum <joelgrun@gmail.com>
Date: Mon, 23 May 2022 12:45:42 +0000
Subject: [PATCH] Allow for dev build and release build

---
 dns.c |   22 +++++++++++++++-------
 1 files changed, 15 insertions(+), 7 deletions(-)

diff --git a/dns.c b/dns.c
index 3784d2f..bc6f7cf 100644
--- a/dns.c
+++ b/dns.c
@@ -69,6 +69,8 @@
 	 char* rdata;
 };
 
+// Test server dns_ip as IPv4 string for hostname
+// Writes received packet to buf, which is supplied and returns time for request
 struct timespec resolve(unsigned char* buf, char* hostname, char* dns_ip, int query_type)
 {
 	 int s, i;
@@ -112,14 +114,17 @@
 	 //send request
 	 // return less than 0 is a fail
 	 clock_gettime(CLOCK_MONOTONIC, &start);
-	 sendto(s,(char*)buf, sizeof(struct DNS_HEADER)+strlen((const char*)qname)+1+sizeof(struct QUESTION), 0, (struct sockaddr*)&dest, sizeof(dest));
+	 i = sendto(s,(char*)buf, sizeof(struct DNS_HEADER)+strlen((const char*)qname)+1+sizeof(struct QUESTION), 0, (struct sockaddr*)&dest, sizeof(dest));
 
-	 //receive response
-	 //negative return is a fail
-	 i = sizeof(dest);
-	 i = recvfrom(s, (char*)buf, 65536, 0, (struct sockaddr*)&dest, (socklen_t*)&i);
-	 clock_gettime(CLOCK_MONOTONIC, &end);
+	 if (i < 0) {
+		  //receive response
+		  //negative return is a fail
+		  i = sizeof(dest);
+		  i = recvfrom(s, (char*)buf, 65536, 0, (struct sockaddr*)&dest, (socklen_t*)&i);
+		  clock_gettime(CLOCK_MONOTONIC, &end);
+	 }
 
+	 // Make sure packet was returned
 	 if (i == -1)
 		  total.tv_nsec = -1;
 	 else
@@ -132,6 +137,7 @@
 	 return total;
 }
 
+// Print dns packet content, not terribly reliable but works for testing resolve with A requests
 void print_packet(unsigned char* buf)
 {
 	 struct RES_RECORD answers[20], auth[20], addit[20];
@@ -242,7 +248,8 @@
 	 }
 }
 
-
+// convert from dot format to dns format
+// eg google.com to 6google3com
 void change_to_DNS_name_format(unsigned char* dns, unsigned char* host)
 {
 	 int lock = 0;
@@ -262,6 +269,7 @@
 	 *dns++ = '\0';
 }
 
+// Convert from dns to dot format
 char* read_name(unsigned char* reader, unsigned char* buffer, int* count)
 {
 	 char* name;

--
Gitblit v1.10.0