diff --git a/llarp/dns.cpp b/llarp/dns.cpp index 36f39b22b..458115c0d 100644 --- a/llarp/dns.cpp +++ b/llarp/dns.cpp @@ -285,6 +285,7 @@ extern "C" llarp::LogDebug("handling as dnsd question"); llarp_handle_dnsd_recvfrom(udp, addr, buf, sz); } + delete hdr; /* llarp::LogInfo("msg op ", hdr->opcode); llarp::LogInfo("msg rc ", hdr->rcode); diff --git a/llarp/dns_dotlokilookup.cpp b/llarp/dns_dotlokilookup.cpp index 9a6819c2d..6119d907c 100644 --- a/llarp/dns_dotlokilookup.cpp +++ b/llarp/dns_dotlokilookup.cpp @@ -105,9 +105,12 @@ llarp_dotlokilookup_checkQuery(void *u, uint64_t orig, uint64_t left) } // make a dnsd_query_hook_response for the cache + /* dnsd_query_hook_response *response = new dnsd_query_hook_response; response->dontLookUp = true; response->dontSendResponse = false; + loki_tld_lookup_cache[addr.ToString()]=response; + */ // we can't delete response now... sockaddr_in saddr; saddr.sin_family = AF_INET; diff --git a/llarp/dnsc.cpp b/llarp/dnsc.cpp index f2370bc99..9a01ed2da 100644 --- a/llarp/dnsc.cpp +++ b/llarp/dnsc.cpp @@ -82,6 +82,7 @@ build_dns_packet(char *url, uint16_t id, uint16_t reqType) } word = strtok(nullptr, "."); } + free(strTemp); dnsQuery->request[dnsQuery->length++] = 0x00; // End of the host name dnsQuery->request[dnsQuery->length++] = 0x00; // 0x0001 - Query is a Type A query (host address) @@ -109,7 +110,9 @@ answer_request_alloc(struct dnsc_context *dnsc, void *sock, const char *url, request->context = dnsc; char *sUrl = strdup(url); - request->question.name = (char *)sUrl; + request->question.name = (char *)sUrl; // since it's a std::String + // we can nuke sUrl now + free(sUrl); // leave 256 bytes available if(request->question.name.size() > 255) @@ -323,7 +326,7 @@ generic_handle_dnsc_recvfrom(dnsc_answer_request *request, if(answer == nullptr) { llarp::LogWarn("nameserver ", upstreamAddr, - " didnt return any answers for ", question->name); + " didnt return any answers for ", question?question->name:"null question"); request->resolved(request); return; } diff --git a/llarp/dnsd.cpp b/llarp/dnsd.cpp index 1feb75795..f1005cbb4 100644 --- a/llarp/dnsd.cpp +++ b/llarp/dnsd.cpp @@ -379,7 +379,7 @@ handle_recvfrom(const char *buffer, ssize_t nbytes, const struct sockaddr *from, return; } */ - + delete fromCopy; if(request->llarp) { // make async request diff --git a/llarp/handlers/tun.cpp b/llarp/handlers/tun.cpp index bc8c4f1db..53336c0c5 100644 --- a/llarp/handlers/tun.cpp +++ b/llarp/handlers/tun.cpp @@ -105,11 +105,7 @@ namespace llarp strncpy(tunif.ifaddr, addr.c_str(), sizeof(tunif.ifaddr) - 1); // set up address in dotLokiLookup - struct sockaddr_in source_addr; - source_addr.sin_addr.s_addr = inet_addr(tunif.ifaddr); - source_addr.sin_family = AF_INET; - - llarp::Addr tunIp(source_addr); + llarp::Addr tunIp(tunif.ifaddr); // related to dns_iptracker_setup_dotLokiLookup(&this->dll, tunIp); dns_iptracker_setup(this->dll.ip_tracker, tunIp); // claim GW IP to make sure it's not inuse