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