mmmm food

main
Brett 2023-10-27 14:46:56 -04:00
parent 3c5236d5d4
commit deb4ee52eb
6 changed files with 1209 additions and 29 deletions

View File

@ -28,7 +28,8 @@
static constexpr size_t PACKET_BUFFER_SIZE = 65535;
/*
* These structs are used in combination with templates to create a form of polymorphism which has significantly reduced the code reuse.
* These structs are used in combination with templates to create polymorphism between the UDP and TCP implementation.
* this design decision has significantly reduced the code reuse while not introducing any runtime overhead.
* The data set within these structures are specific to the protocol they implement. UDP is exactly as specified in the RFC spec
* TCP is what I observed from wireshark (+2 byte offset)
*/

View File

@ -1,5 +1,5 @@
/*
* BLT Memory Util for parsing DNS packets / BLT + ASIO simple packet sender.
* BLT Memory Util for parsing DNS packets / BLT + ASIO simple packet sender / BLT Type Name Demangler.
* This software is unlikely to become part of BLT main but is provided under the BLT license (GPL 3).
* Copyright (C) 2023 Brett Terpstra, Et al
*
@ -26,6 +26,13 @@
#include <cstdint>
#include <functional>
#include <blt/std/memory.h>
#include <blt/std/logging.h>
#ifdef __GNUC__
#include <cxxabi.h>
#endif
using asio::ip::udp;
using asio::ip::tcp;
@ -128,6 +135,7 @@ namespace blt
void sendUDPMessage(const std::string& host, const unsigned char* const& in, size_t in_size, blt::scoped_buffer<unsigned char>& out,
size_t& out_size)
{
BLT_DEBUG("Sending UDP DNS request to '%s' of size %d", host.c_str(), in_size);
asio::io_context io_context;
udp::endpoint receiver_endpoint(asio::ip::address::from_string(host), 53);
@ -138,6 +146,7 @@ namespace blt
udp::endpoint sender_endpoint;
out_size = socket.receive_from(asio::buffer(out.data(), out.size()), sender_endpoint);
BLT_DEBUG("Received UDP DNS response from '%s' of size %d", host.c_str(), out_size);
}
/**
@ -151,6 +160,7 @@ namespace blt
void sendTCPMessage(const std::string& host, const unsigned char* const& in, size_t in_size, blt::scoped_buffer<unsigned char>& out,
size_t& out_size)
{
BLT_DEBUG("Sending TCP DNS request to '%s' of size %d", host.c_str(), in_size);
asio::io_context io_context;
tcp::resolver resolver(io_context);
tcp::resolver::results_type endpoints = resolver.resolve(host, "53");
@ -161,8 +171,40 @@ namespace blt
asio::write(socket, asio::buffer(in, in_size));
out_size = socket.read_some(asio::buffer(out.data(), out.size()));
BLT_DEBUG("Received TCP dns response from '%s' of size %d", host.c_str(), out_size);
}
}
#ifdef __GNUC__
/**
* Attempts to demangle the type name of the provided template type
* @tparam T
* @return
*/
template<typename T>
static BLT_CPP20_CONSTEXPR inline std::string type_name()
{
int status;
std::string return_name = typeid(T).name();
// only defined for GNU C++11?
char *demangled_name = abi::__cxa_demangle(return_name.c_str(), nullptr, nullptr, &status);
if (demangled_name == nullptr)
return return_name;
return_name = demangled_name;
std::free(demangled_name);
return return_name;
}
template<typename T>
static BLT_CPP20_CONSTEXPR inline std::string is_UDP_or_TCP(){
std::string type = "UDP";
if (blt::string::contains(blt::type_name<T>(), "TCP"))
type = "TCP";
return type;
}
#endif
}

@ -1 +1 @@
Subproject commit 55c497475e15b9a4ff0ac319c2997bd1869c4454
Subproject commit 1d8f9b4bbdb84647c8a96b1ef87d262afd7021cb

619
massif.out.11899 Normal file
View File

@ -0,0 +1,619 @@
desc: (none)
cmd: ./cmake-build-release/insane_dns
time_unit: i
#-----------
snapshot=0
#-----------
time=0
mem_heap_B=0
mem_heap_extra_B=0
mem_stacks_B=0
heap_tree=empty
#-----------
snapshot=1
#-----------
time=1858253
mem_heap_B=72704
mem_heap_extra_B=8
mem_stacks_B=0
heap_tree=empty
#-----------
snapshot=2
#-----------
time=1967477
mem_heap_B=72721
mem_heap_extra_B=31
mem_stacks_B=0
heap_tree=empty
#-----------
snapshot=3
#-----------
time=2065395
mem_heap_B=83254
mem_heap_extra_B=426
mem_stacks_B=0
heap_tree=empty
#-----------
snapshot=4
#-----------
time=2127401
mem_heap_B=82839
mem_heap_extra_B=385
mem_stacks_B=0
heap_tree=empty
#-----------
snapshot=5
#-----------
time=2180342
mem_heap_B=346399
mem_heap_extra_B=521
mem_stacks_B=0
heap_tree=peak
n7: 346399 (heap allocation functions) malloc/new/new[], --alloc-fns, etc.
n1: 72704 0x49077B9: ??? (in /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.30)
n1: 72704 0x4004ABD: call_init (dl-init.c:70)
n1: 72704 0x4004ABD: call_init (dl-init.c:26)
n1: 72704 0x4004BA3: _dl_init (dl-init.c:117)
n0: 72704 0x401AA5F: ??? (in /usr/lib/x86_64-linux-gnu/ld-linux-x86-64.so.2)
n1: 65535 0x12315B: run_udp_server() (in /home/brett/Documents/code/c++/Insane_DNS/cmake-build-release/insane_dns)
n1: 65535 0x49364A2: ??? (in /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.30)
n1: 65535 0x4B25043: start_thread (pthread_create.c:442)
n0: 65535 0x4BA485F: clone (clone.S:100)
n1: 65535 0x123177: run_udp_server() (in /home/brett/Documents/code/c++/Insane_DNS/cmake-build-release/insane_dns)
n1: 65535 0x49364A2: ??? (in /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.30)
n1: 65535 0x4B25043: start_thread (pthread_create.c:442)
n0: 65535 0x4BA485F: clone (clone.S:100)
n1: 65535 0x125E23: run_tcp_server() (in /home/brett/Documents/code/c++/Insane_DNS/cmake-build-release/insane_dns)
n1: 65535 0x49364A2: ??? (in /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.30)
n1: 65535 0x4B25043: start_thread (pthread_create.c:442)
n0: 65535 0x4BA485F: clone (clone.S:100)
n1: 65535 0x125E3F: run_tcp_server() (in /home/brett/Documents/code/c++/Insane_DNS/cmake-build-release/insane_dns)
n1: 65535 0x49364A2: ??? (in /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.30)
n1: 65535 0x4B25043: start_thread (pthread_create.c:442)
n0: 65535 0x4BA485F: clone (clone.S:100)
n0: 6043 in 35 places, all below massif's threshold (1.00%)
n1: 5512 0x13B9F6: std::__detail::_MakeUniq<blt::logging::tag_map>::__single_object std::make_unique<blt::logging::tag_map, blt::logging::tag_map>(blt::logging::tag_map&&) (in /home/brett/Documents/code/c++/Insane_DNS/cmake-build-release/insane_dns)
n1: 5512 0x121189: __static_initialization_and_destruction_0(int, int) [clone .constprop.0] (in /home/brett/Documents/code/c++/Insane_DNS/cmake-build-release/insane_dns)
n1: 5512 0x4AC32F5: call_init (libc-start.c:145)
n1: 5512 0x4AC32F5: __libc_start_main@@GLIBC_2.34 (libc-start.c:347)
n0: 5512 0x121370: (below main) (in /home/brett/Documents/code/c++/Insane_DNS/cmake-build-release/insane_dns)
#-----------
snapshot=6
#-----------
time=2228939
mem_heap_B=346548
mem_heap_extra_B=516
mem_stacks_B=0
heap_tree=empty
#-----------
snapshot=7
#-----------
time=2302687
mem_heap_B=348602
mem_heap_extra_B=758
mem_stacks_B=0
heap_tree=empty
#-----------
snapshot=8
#-----------
time=2402590
mem_heap_B=346383
mem_heap_extra_B=513
mem_stacks_B=0
heap_tree=empty
#-----------
snapshot=9
#-----------
time=2483605
mem_heap_B=347791
mem_heap_extra_B=729
mem_stacks_B=0
heap_tree=empty
#-----------
snapshot=10
#-----------
time=2565212
mem_heap_B=347203
mem_heap_extra_B=741
mem_stacks_B=0
heap_tree=empty
#-----------
snapshot=11
#-----------
time=2621156
mem_heap_B=347203
mem_heap_extra_B=741
mem_stacks_B=0
heap_tree=detailed
n7: 347203 (heap allocation functions) malloc/new/new[], --alloc-fns, etc.
n1: 72704 0x49077B9: ??? (in /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.30)
n1: 72704 0x4004ABD: call_init (dl-init.c:70)
n1: 72704 0x4004ABD: call_init (dl-init.c:26)
n1: 72704 0x4004BA3: _dl_init (dl-init.c:117)
n0: 72704 0x401AA5F: ??? (in /usr/lib/x86_64-linux-gnu/ld-linux-x86-64.so.2)
n1: 65535 0x12315B: run_udp_server() (in /home/brett/Documents/code/c++/Insane_DNS/cmake-build-release/insane_dns)
n1: 65535 0x49364A2: ??? (in /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.30)
n1: 65535 0x4B25043: start_thread (pthread_create.c:442)
n0: 65535 0x4BA485F: clone (clone.S:100)
n1: 65535 0x123177: run_udp_server() (in /home/brett/Documents/code/c++/Insane_DNS/cmake-build-release/insane_dns)
n1: 65535 0x49364A2: ??? (in /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.30)
n1: 65535 0x4B25043: start_thread (pthread_create.c:442)
n0: 65535 0x4BA485F: clone (clone.S:100)
n1: 65535 0x125E23: run_tcp_server() (in /home/brett/Documents/code/c++/Insane_DNS/cmake-build-release/insane_dns)
n1: 65535 0x49364A2: ??? (in /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.30)
n1: 65535 0x4B25043: start_thread (pthread_create.c:442)
n0: 65535 0x4BA485F: clone (clone.S:100)
n1: 65535 0x125E3F: run_tcp_server() (in /home/brett/Documents/code/c++/Insane_DNS/cmake-build-release/insane_dns)
n1: 65535 0x49364A2: ??? (in /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.30)
n1: 65535 0x4B25043: start_thread (pthread_create.c:442)
n0: 65535 0x4BA485F: clone (clone.S:100)
n0: 6847 in 46 places, all below massif's threshold (1.00%)
n1: 5512 0x13B9F6: std::__detail::_MakeUniq<blt::logging::tag_map>::__single_object std::make_unique<blt::logging::tag_map, blt::logging::tag_map>(blt::logging::tag_map&&) (in /home/brett/Documents/code/c++/Insane_DNS/cmake-build-release/insane_dns)
n1: 5512 0x121189: __static_initialization_and_destruction_0(int, int) [clone .constprop.0] (in /home/brett/Documents/code/c++/Insane_DNS/cmake-build-release/insane_dns)
n1: 5512 0x4AC32F5: call_init (libc-start.c:145)
n1: 5512 0x4AC32F5: __libc_start_main@@GLIBC_2.34 (libc-start.c:347)
n0: 5512 0x121370: (below main) (in /home/brett/Documents/code/c++/Insane_DNS/cmake-build-release/insane_dns)
#-----------
snapshot=12
#-----------
time=2686859
mem_heap_B=346993
mem_heap_extra_B=711
mem_stacks_B=0
heap_tree=empty
#-----------
snapshot=13
#-----------
time=2791597
mem_heap_B=347876
mem_heap_extra_B=740
mem_stacks_B=0
heap_tree=empty
#-----------
snapshot=14
#-----------
time=2843781
mem_heap_B=347289
mem_heap_extra_B=591
mem_stacks_B=0
heap_tree=empty
#-----------
snapshot=15
#-----------
time=2921141
mem_heap_B=348298
mem_heap_extra_B=646
mem_stacks_B=0
heap_tree=empty
#-----------
snapshot=16
#-----------
time=3030115
mem_heap_B=346383
mem_heap_extra_B=513
mem_stacks_B=0
heap_tree=empty
#-----------
snapshot=17
#-----------
time=3097580
mem_heap_B=346839
mem_heap_extra_B=593
mem_stacks_B=0
heap_tree=empty
#-----------
snapshot=18
#-----------
time=3142554
mem_heap_B=347052
mem_heap_extra_B=620
mem_stacks_B=0
heap_tree=empty
#-----------
snapshot=19
#-----------
time=3219691
mem_heap_B=346492
mem_heap_extra_B=516
mem_stacks_B=0
heap_tree=empty
#-----------
snapshot=20
#-----------
time=3279011
mem_heap_B=347293
mem_heap_extra_B=587
mem_stacks_B=0
heap_tree=empty
#-----------
snapshot=21
#-----------
time=3354896
mem_heap_B=348888
mem_heap_extra_B=784
mem_stacks_B=0
heap_tree=empty
#-----------
snapshot=22
#-----------
time=3432040
mem_heap_B=346383
mem_heap_extra_B=513
mem_stacks_B=0
heap_tree=empty
#-----------
snapshot=23
#-----------
time=3491370
mem_heap_B=347474
mem_heap_extra_B=694
mem_stacks_B=0
heap_tree=empty
#-----------
snapshot=24
#-----------
time=3566435
mem_heap_B=347294
mem_heap_extra_B=730
mem_stacks_B=0
heap_tree=empty
#-----------
snapshot=25
#-----------
time=3626993
mem_heap_B=346972
mem_heap_extra_B=700
mem_stacks_B=0
heap_tree=detailed
n7: 346972 (heap allocation functions) malloc/new/new[], --alloc-fns, etc.
n1: 72704 0x49077B9: ??? (in /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.30)
n1: 72704 0x4004ABD: call_init (dl-init.c:70)
n1: 72704 0x4004ABD: call_init (dl-init.c:26)
n1: 72704 0x4004BA3: _dl_init (dl-init.c:117)
n0: 72704 0x401AA5F: ??? (in /usr/lib/x86_64-linux-gnu/ld-linux-x86-64.so.2)
n1: 65535 0x12315B: run_udp_server() (in /home/brett/Documents/code/c++/Insane_DNS/cmake-build-release/insane_dns)
n1: 65535 0x49364A2: ??? (in /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.30)
n1: 65535 0x4B25043: start_thread (pthread_create.c:442)
n0: 65535 0x4BA485F: clone (clone.S:100)
n1: 65535 0x123177: run_udp_server() (in /home/brett/Documents/code/c++/Insane_DNS/cmake-build-release/insane_dns)
n1: 65535 0x49364A2: ??? (in /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.30)
n1: 65535 0x4B25043: start_thread (pthread_create.c:442)
n0: 65535 0x4BA485F: clone (clone.S:100)
n1: 65535 0x125E23: run_tcp_server() (in /home/brett/Documents/code/c++/Insane_DNS/cmake-build-release/insane_dns)
n1: 65535 0x49364A2: ??? (in /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.30)
n1: 65535 0x4B25043: start_thread (pthread_create.c:442)
n0: 65535 0x4BA485F: clone (clone.S:100)
n1: 65535 0x125E3F: run_tcp_server() (in /home/brett/Documents/code/c++/Insane_DNS/cmake-build-release/insane_dns)
n1: 65535 0x49364A2: ??? (in /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.30)
n1: 65535 0x4B25043: start_thread (pthread_create.c:442)
n0: 65535 0x4BA485F: clone (clone.S:100)
n0: 6616 in 50 places, all below massif's threshold (1.00%)
n1: 5512 0x13B9F6: std::__detail::_MakeUniq<blt::logging::tag_map>::__single_object std::make_unique<blt::logging::tag_map, blt::logging::tag_map>(blt::logging::tag_map&&) (in /home/brett/Documents/code/c++/Insane_DNS/cmake-build-release/insane_dns)
n1: 5512 0x121189: __static_initialization_and_destruction_0(int, int) [clone .constprop.0] (in /home/brett/Documents/code/c++/Insane_DNS/cmake-build-release/insane_dns)
n1: 5512 0x4AC32F5: call_init (libc-start.c:145)
n1: 5512 0x4AC32F5: __libc_start_main@@GLIBC_2.34 (libc-start.c:347)
n0: 5512 0x121370: (below main) (in /home/brett/Documents/code/c++/Insane_DNS/cmake-build-release/insane_dns)
#-----------
snapshot=26
#-----------
time=3716795
mem_heap_B=346972
mem_heap_extra_B=700
mem_stacks_B=0
heap_tree=empty
#-----------
snapshot=27
#-----------
time=3761731
mem_heap_B=346974
mem_heap_extra_B=698
mem_stacks_B=0
heap_tree=empty
#-----------
snapshot=28
#-----------
time=3836623
mem_heap_B=347264
mem_heap_extra_B=744
mem_stacks_B=0
heap_tree=empty
#-----------
snapshot=29
#-----------
time=3926969
mem_heap_B=346723
mem_heap_extra_B=565
mem_stacks_B=0
heap_tree=detailed
n7: 346723 (heap allocation functions) malloc/new/new[], --alloc-fns, etc.
n1: 72704 0x49077B9: ??? (in /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.30)
n1: 72704 0x4004ABD: call_init (dl-init.c:70)
n1: 72704 0x4004ABD: call_init (dl-init.c:26)
n1: 72704 0x4004BA3: _dl_init (dl-init.c:117)
n0: 72704 0x401AA5F: ??? (in /usr/lib/x86_64-linux-gnu/ld-linux-x86-64.so.2)
n1: 65535 0x12315B: run_udp_server() (in /home/brett/Documents/code/c++/Insane_DNS/cmake-build-release/insane_dns)
n1: 65535 0x49364A2: ??? (in /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.30)
n1: 65535 0x4B25043: start_thread (pthread_create.c:442)
n0: 65535 0x4BA485F: clone (clone.S:100)
n1: 65535 0x123177: run_udp_server() (in /home/brett/Documents/code/c++/Insane_DNS/cmake-build-release/insane_dns)
n1: 65535 0x49364A2: ??? (in /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.30)
n1: 65535 0x4B25043: start_thread (pthread_create.c:442)
n0: 65535 0x4BA485F: clone (clone.S:100)
n1: 65535 0x125E23: run_tcp_server() (in /home/brett/Documents/code/c++/Insane_DNS/cmake-build-release/insane_dns)
n1: 65535 0x49364A2: ??? (in /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.30)
n1: 65535 0x4B25043: start_thread (pthread_create.c:442)
n0: 65535 0x4BA485F: clone (clone.S:100)
n1: 65535 0x125E3F: run_tcp_server() (in /home/brett/Documents/code/c++/Insane_DNS/cmake-build-release/insane_dns)
n1: 65535 0x49364A2: ??? (in /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.30)
n1: 65535 0x4B25043: start_thread (pthread_create.c:442)
n0: 65535 0x4BA485F: clone (clone.S:100)
n0: 6367 in 50 places, all below massif's threshold (1.00%)
n1: 5512 0x13B9F6: std::__detail::_MakeUniq<blt::logging::tag_map>::__single_object std::make_unique<blt::logging::tag_map, blt::logging::tag_map>(blt::logging::tag_map&&) (in /home/brett/Documents/code/c++/Insane_DNS/cmake-build-release/insane_dns)
n1: 5512 0x121189: __static_initialization_and_destruction_0(int, int) [clone .constprop.0] (in /home/brett/Documents/code/c++/Insane_DNS/cmake-build-release/insane_dns)
n1: 5512 0x4AC32F5: call_init (libc-start.c:145)
n1: 5512 0x4AC32F5: __libc_start_main@@GLIBC_2.34 (libc-start.c:347)
n0: 5512 0x121370: (below main) (in /home/brett/Documents/code/c++/Insane_DNS/cmake-build-release/insane_dns)
#-----------
snapshot=30
#-----------
time=3972677
mem_heap_B=348103
mem_heap_extra_B=665
mem_stacks_B=0
heap_tree=empty
#-----------
snapshot=31
#-----------
time=4056355
mem_heap_B=346383
mem_heap_extra_B=513
mem_stacks_B=0
heap_tree=empty
#-----------
snapshot=32
#-----------
time=4147071
mem_heap_B=347573
mem_heap_extra_B=627
mem_stacks_B=0
heap_tree=empty
#-----------
snapshot=33
#-----------
time=4192567
mem_heap_B=347659
mem_heap_extra_B=669
mem_stacks_B=0
heap_tree=empty
#-----------
snapshot=34
#-----------
time=4260795
mem_heap_B=346776
mem_heap_extra_B=592
mem_stacks_B=0
heap_tree=empty
#-----------
snapshot=35
#-----------
time=4306232
mem_heap_B=347293
mem_heap_extra_B=587
mem_stacks_B=0
heap_tree=empty
#-----------
snapshot=36
#-----------
time=4374355
mem_heap_B=348887
mem_heap_extra_B=785
mem_stacks_B=0
heap_tree=empty
#-----------
snapshot=37
#-----------
time=4455264
mem_heap_B=346383
mem_heap_extra_B=513
mem_stacks_B=0
heap_tree=empty
#-----------
snapshot=38
#-----------
time=4523346
mem_heap_B=346970
mem_heap_extra_B=590
mem_stacks_B=0
heap_tree=empty
#-----------
snapshot=39
#-----------
time=4591349
mem_heap_B=347629
mem_heap_extra_B=643
mem_stacks_B=0
heap_tree=empty
#-----------
snapshot=40
#-----------
time=4636590
mem_heap_B=346811
mem_heap_extra_B=581
mem_stacks_B=0
heap_tree=empty
#-----------
snapshot=41
#-----------
time=4727579
mem_heap_B=347783
mem_heap_extra_B=673
mem_stacks_B=0
heap_tree=detailed
n7: 347783 (heap allocation functions) malloc/new/new[], --alloc-fns, etc.
n1: 72704 0x49077B9: ??? (in /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.30)
n1: 72704 0x4004ABD: call_init (dl-init.c:70)
n1: 72704 0x4004ABD: call_init (dl-init.c:26)
n1: 72704 0x4004BA3: _dl_init (dl-init.c:117)
n0: 72704 0x401AA5F: ??? (in /usr/lib/x86_64-linux-gnu/ld-linux-x86-64.so.2)
n1: 65535 0x12315B: run_udp_server() (in /home/brett/Documents/code/c++/Insane_DNS/cmake-build-release/insane_dns)
n1: 65535 0x49364A2: ??? (in /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.30)
n1: 65535 0x4B25043: start_thread (pthread_create.c:442)
n0: 65535 0x4BA485F: clone (clone.S:100)
n1: 65535 0x123177: run_udp_server() (in /home/brett/Documents/code/c++/Insane_DNS/cmake-build-release/insane_dns)
n1: 65535 0x49364A2: ??? (in /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.30)
n1: 65535 0x4B25043: start_thread (pthread_create.c:442)
n0: 65535 0x4BA485F: clone (clone.S:100)
n1: 65535 0x125E23: run_tcp_server() (in /home/brett/Documents/code/c++/Insane_DNS/cmake-build-release/insane_dns)
n1: 65535 0x49364A2: ??? (in /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.30)
n1: 65535 0x4B25043: start_thread (pthread_create.c:442)
n0: 65535 0x4BA485F: clone (clone.S:100)
n1: 65535 0x125E3F: run_tcp_server() (in /home/brett/Documents/code/c++/Insane_DNS/cmake-build-release/insane_dns)
n1: 65535 0x49364A2: ??? (in /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.30)
n1: 65535 0x4B25043: start_thread (pthread_create.c:442)
n0: 65535 0x4BA485F: clone (clone.S:100)
n0: 7427 in 50 places, all below massif's threshold (1.00%)
n1: 5512 0x13B9F6: std::__detail::_MakeUniq<blt::logging::tag_map>::__single_object std::make_unique<blt::logging::tag_map, blt::logging::tag_map>(blt::logging::tag_map&&) (in /home/brett/Documents/code/c++/Insane_DNS/cmake-build-release/insane_dns)
n1: 5512 0x121189: __static_initialization_and_destruction_0(int, int) [clone .constprop.0] (in /home/brett/Documents/code/c++/Insane_DNS/cmake-build-release/insane_dns)
n1: 5512 0x4AC32F5: call_init (libc-start.c:145)
n1: 5512 0x4AC32F5: __libc_start_main@@GLIBC_2.34 (libc-start.c:347)
n0: 5512 0x121370: (below main) (in /home/brett/Documents/code/c++/Insane_DNS/cmake-build-release/insane_dns)
#-----------
snapshot=42
#-----------
time=4805586
mem_heap_B=346383
mem_heap_extra_B=513
mem_stacks_B=0
heap_tree=empty
#-----------
snapshot=43
#-----------
time=4873480
mem_heap_B=346929
mem_heap_extra_B=583
mem_stacks_B=0
heap_tree=empty
#-----------
snapshot=44
#-----------
time=4919047
mem_heap_B=347515
mem_heap_extra_B=597
mem_stacks_B=0
heap_tree=empty
#-----------
snapshot=45
#-----------
time=4986981
mem_heap_B=347195
mem_heap_extra_B=613
mem_stacks_B=0
heap_tree=empty
#-----------
snapshot=46
#-----------
time=5032678
mem_heap_B=348375
mem_heap_extra_B=777
mem_stacks_B=0
heap_tree=empty
#-----------
snapshot=47
#-----------
time=5114347
mem_heap_B=346383
mem_heap_extra_B=513
mem_stacks_B=0
heap_tree=empty
#-----------
snapshot=48
#-----------
time=5204963
mem_heap_B=347542
mem_heap_extra_B=602
mem_stacks_B=0
heap_tree=empty
#-----------
snapshot=49
#-----------
time=5296131
mem_heap_B=346751
mem_heap_extra_B=577
mem_stacks_B=0
heap_tree=detailed
n7: 346751 (heap allocation functions) malloc/new/new[], --alloc-fns, etc.
n1: 72704 0x49077B9: ??? (in /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.30)
n1: 72704 0x4004ABD: call_init (dl-init.c:70)
n1: 72704 0x4004ABD: call_init (dl-init.c:26)
n1: 72704 0x4004BA3: _dl_init (dl-init.c:117)
n0: 72704 0x401AA5F: ??? (in /usr/lib/x86_64-linux-gnu/ld-linux-x86-64.so.2)
n1: 65535 0x12315B: run_udp_server() (in /home/brett/Documents/code/c++/Insane_DNS/cmake-build-release/insane_dns)
n1: 65535 0x49364A2: ??? (in /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.30)
n1: 65535 0x4B25043: start_thread (pthread_create.c:442)
n0: 65535 0x4BA485F: clone (clone.S:100)
n1: 65535 0x123177: run_udp_server() (in /home/brett/Documents/code/c++/Insane_DNS/cmake-build-release/insane_dns)
n1: 65535 0x49364A2: ??? (in /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.30)
n1: 65535 0x4B25043: start_thread (pthread_create.c:442)
n0: 65535 0x4BA485F: clone (clone.S:100)
n1: 65535 0x125E23: run_tcp_server() (in /home/brett/Documents/code/c++/Insane_DNS/cmake-build-release/insane_dns)
n1: 65535 0x49364A2: ??? (in /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.30)
n1: 65535 0x4B25043: start_thread (pthread_create.c:442)
n0: 65535 0x4BA485F: clone (clone.S:100)
n1: 65535 0x125E3F: run_tcp_server() (in /home/brett/Documents/code/c++/Insane_DNS/cmake-build-release/insane_dns)
n1: 65535 0x49364A2: ??? (in /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.30)
n1: 65535 0x4B25043: start_thread (pthread_create.c:442)
n0: 65535 0x4BA485F: clone (clone.S:100)
n0: 6395 in 50 places, all below massif's threshold (1.00%)
n1: 5512 0x13B9F6: std::__detail::_MakeUniq<blt::logging::tag_map>::__single_object std::make_unique<blt::logging::tag_map, blt::logging::tag_map>(blt::logging::tag_map&&) (in /home/brett/Documents/code/c++/Insane_DNS/cmake-build-release/insane_dns)
n1: 5512 0x121189: __static_initialization_and_destruction_0(int, int) [clone .constprop.0] (in /home/brett/Documents/code/c++/Insane_DNS/cmake-build-release/insane_dns)
n1: 5512 0x4AC32F5: call_init (libc-start.c:145)
n1: 5512 0x4AC32F5: __libc_start_main@@GLIBC_2.34 (libc-start.c:347)
n0: 5512 0x121370: (below main) (in /home/brett/Documents/code/c++/Insane_DNS/cmake-build-release/insane_dns)
#-----------
snapshot=50
#-----------
time=5341085
mem_heap_B=346939
mem_heap_extra_B=605
mem_stacks_B=0
heap_tree=empty
#-----------
snapshot=51
#-----------
time=5386034
mem_heap_B=348215
mem_heap_extra_B=785
mem_stacks_B=0
heap_tree=empty
#-----------
snapshot=52
#-----------
time=5468799
mem_heap_B=346383
mem_heap_extra_B=513
mem_stacks_B=0
heap_tree=empty
#-----------
snapshot=53
#-----------
time=5514187
mem_heap_B=347599
mem_heap_extra_B=609
mem_stacks_B=0
heap_tree=empty
#-----------
snapshot=54
#-----------
time=5559331
mem_heap_B=347542
mem_heap_extra_B=602
mem_stacks_B=0
heap_tree=empty
#-----------
snapshot=55
#-----------
time=5604884
mem_heap_B=347629
mem_heap_extra_B=643
mem_stacks_B=0
heap_tree=empty

512
massif.out.12308 Normal file
View File

@ -0,0 +1,512 @@
desc: (none)
cmd: ./cmake-build-release/insane_dns
time_unit: i
#-----------
snapshot=0
#-----------
time=0
mem_heap_B=0
mem_heap_extra_B=0
mem_stacks_B=0
heap_tree=empty
#-----------
snapshot=1
#-----------
time=1858915
mem_heap_B=72704
mem_heap_extra_B=8
mem_stacks_B=0
heap_tree=empty
#-----------
snapshot=2
#-----------
time=1968102
mem_heap_B=72721
mem_heap_extra_B=31
mem_stacks_B=0
heap_tree=empty
#-----------
snapshot=3
#-----------
time=1991434
mem_heap_B=84075
mem_heap_extra_B=141
mem_stacks_B=0
heap_tree=detailed
n4: 84075 (heap allocation functions) malloc/new/new[], --alloc-fns, etc.
n1: 72704 0x49077B9: ??? (in /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.30)
n1: 72704 0x4004ABD: call_init (dl-init.c:70)
n1: 72704 0x4004ABD: call_init (dl-init.c:26)
n1: 72704 0x4004BA3: _dl_init (dl-init.c:117)
n0: 72704 0x401AA5F: ??? (in /usr/lib/x86_64-linux-gnu/ld-linux-x86-64.so.2)
n1: 5512 0x13B5F7: blt::logging::tag_map::tag_map(std::initializer_list<blt::logging::tag>) (in /home/brett/Documents/code/c++/Insane_DNS/cmake-build-release/insane_dns)
n1: 5512 0x121247: __static_initialization_and_destruction_0(int, int) [clone .constprop.0] (in /home/brett/Documents/code/c++/Insane_DNS/cmake-build-release/insane_dns)
n1: 5512 0x4AC32F5: call_init (libc-start.c:145)
n1: 5512 0x4AC32F5: __libc_start_main@@GLIBC_2.34 (libc-start.c:347)
n0: 5512 0x121440: (below main) (in /home/brett/Documents/code/c++/Insane_DNS/cmake-build-release/insane_dns)
n1: 5512 0x13B9D6: std::__detail::_MakeUniq<blt::logging::tag_map>::__single_object std::make_unique<blt::logging::tag_map, blt::logging::tag_map>(blt::logging::tag_map&&) (in /home/brett/Documents/code/c++/Insane_DNS/cmake-build-release/insane_dns)
n1: 5512 0x121259: __static_initialization_and_destruction_0(int, int) [clone .constprop.0] (in /home/brett/Documents/code/c++/Insane_DNS/cmake-build-release/insane_dns)
n1: 5512 0x4AC32F5: call_init (libc-start.c:145)
n1: 5512 0x4AC32F5: __libc_start_main@@GLIBC_2.34 (libc-start.c:347)
n0: 5512 0x121440: (below main) (in /home/brett/Documents/code/c++/Insane_DNS/cmake-build-release/insane_dns)
n0: 347 in 6 places, all below massif's threshold (1.00%)
#-----------
snapshot=4
#-----------
time=2022277
mem_heap_B=81429
mem_heap_extra_B=387
mem_stacks_B=0
heap_tree=empty
#-----------
snapshot=5
#-----------
time=2066046
mem_heap_B=83254
mem_heap_extra_B=426
mem_stacks_B=0
heap_tree=empty
#-----------
snapshot=6
#-----------
time=2097404
mem_heap_B=82492
mem_heap_extra_B=404
mem_stacks_B=0
heap_tree=empty
#-----------
snapshot=7
#-----------
time=2128135
mem_heap_B=82839
mem_heap_extra_B=385
mem_stacks_B=0
heap_tree=empty
#-----------
snapshot=8
#-----------
time=2164690
mem_heap_B=83930
mem_heap_extra_B=342
mem_stacks_B=0
heap_tree=empty
#-----------
snapshot=9
#-----------
time=2185650
mem_heap_B=347255
mem_heap_extra_B=513
mem_stacks_B=0
heap_tree=peak
n7: 347255 (heap allocation functions) malloc/new/new[], --alloc-fns, etc.
n1: 72704 0x49077B9: ??? (in /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.30)
n1: 72704 0x4004ABD: call_init (dl-init.c:70)
n1: 72704 0x4004ABD: call_init (dl-init.c:26)
n1: 72704 0x4004BA3: _dl_init (dl-init.c:117)
n0: 72704 0x401AA5F: ??? (in /usr/lib/x86_64-linux-gnu/ld-linux-x86-64.so.2)
n1: 65535 0x12322B: run_udp_server() (in /home/brett/Documents/code/c++/Insane_DNS/cmake-build-release/insane_dns)
n1: 65535 0x49364A2: ??? (in /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.30)
n1: 65535 0x4B25043: start_thread (pthread_create.c:442)
n0: 65535 0x4BA485F: clone (clone.S:100)
n1: 65535 0x123247: run_udp_server() (in /home/brett/Documents/code/c++/Insane_DNS/cmake-build-release/insane_dns)
n1: 65535 0x49364A2: ??? (in /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.30)
n1: 65535 0x4B25043: start_thread (pthread_create.c:442)
n0: 65535 0x4BA485F: clone (clone.S:100)
n1: 65535 0x125FBD: run_tcp_server() (in /home/brett/Documents/code/c++/Insane_DNS/cmake-build-release/insane_dns)
n1: 65535 0x49364A2: ??? (in /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.30)
n1: 65535 0x4B25043: start_thread (pthread_create.c:442)
n0: 65535 0x4BA485F: clone (clone.S:100)
n1: 65535 0x125FD9: run_tcp_server() (in /home/brett/Documents/code/c++/Insane_DNS/cmake-build-release/insane_dns)
n1: 65535 0x49364A2: ??? (in /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.30)
n1: 65535 0x4B25043: start_thread (pthread_create.c:442)
n0: 65535 0x4BA485F: clone (clone.S:100)
n0: 6899 in 36 places, all below massif's threshold (1.00%)
n1: 5512 0x13B9D6: std::__detail::_MakeUniq<blt::logging::tag_map>::__single_object std::make_unique<blt::logging::tag_map, blt::logging::tag_map>(blt::logging::tag_map&&) (in /home/brett/Documents/code/c++/Insane_DNS/cmake-build-release/insane_dns)
n1: 5512 0x121259: __static_initialization_and_destruction_0(int, int) [clone .constprop.0] (in /home/brett/Documents/code/c++/Insane_DNS/cmake-build-release/insane_dns)
n1: 5512 0x4AC32F5: call_init (libc-start.c:145)
n1: 5512 0x4AC32F5: __libc_start_main@@GLIBC_2.34 (libc-start.c:347)
n0: 5512 0x121440: (below main) (in /home/brett/Documents/code/c++/Insane_DNS/cmake-build-release/insane_dns)
#-----------
snapshot=10
#-----------
time=2217424
mem_heap_B=347729
mem_heap_extra_B=591
mem_stacks_B=0
heap_tree=empty
#-----------
snapshot=11
#-----------
time=2238570
mem_heap_B=347551
mem_heap_extra_B=529
mem_stacks_B=0
heap_tree=empty
#-----------
snapshot=12
#-----------
time=2273309
mem_heap_B=348435
mem_heap_extra_B=605
mem_stacks_B=0
heap_tree=empty
#-----------
snapshot=13
#-----------
time=2296370
mem_heap_B=348898
mem_heap_extra_B=646
mem_stacks_B=0
heap_tree=empty
#-----------
snapshot=14
#-----------
time=2336534
mem_heap_B=347286
mem_heap_extra_B=474
mem_stacks_B=0
heap_tree=empty
#-----------
snapshot=15
#-----------
time=2402373
mem_heap_B=347239
mem_heap_extra_B=505
mem_stacks_B=0
heap_tree=empty
#-----------
snapshot=16
#-----------
time=2431609
mem_heap_B=347723
mem_heap_extra_B=597
mem_stacks_B=0
heap_tree=empty
#-----------
snapshot=17
#-----------
time=2460342
mem_heap_B=348308
mem_heap_extra_B=604
mem_stacks_B=0
heap_tree=empty
#-----------
snapshot=18
#-----------
time=2503251
mem_heap_B=347552
mem_heap_extra_B=616
mem_stacks_B=0
heap_tree=empty
#-----------
snapshot=19
#-----------
time=2531869
mem_heap_B=348259
mem_heap_extra_B=653
mem_stacks_B=0
heap_tree=empty
#-----------
snapshot=20
#-----------
time=2559925
mem_heap_B=347783
mem_heap_extra_B=673
mem_stacks_B=0
heap_tree=empty
#-----------
snapshot=21
#-----------
time=2599638
mem_heap_B=348508
mem_heap_extra_B=612
mem_stacks_B=0
heap_tree=empty
#-----------
snapshot=22
#-----------
time=2623188
mem_heap_B=347833
mem_heap_extra_B=615
mem_stacks_B=0
heap_tree=empty
#-----------
snapshot=23
#-----------
time=2652796
mem_heap_B=348573
mem_heap_extra_B=619
mem_stacks_B=0
heap_tree=empty
#-----------
snapshot=24
#-----------
time=2675828
mem_heap_B=348603
mem_heap_extra_B=637
mem_stacks_B=0
heap_tree=empty
#-----------
snapshot=25
#-----------
time=2700332
mem_heap_B=349467
mem_heap_extra_B=765
mem_stacks_B=0
heap_tree=empty
#-----------
snapshot=26
#-----------
time=2737715
mem_heap_B=348833
mem_heap_extra_B=687
mem_stacks_B=0
heap_tree=empty
#-----------
snapshot=27
#-----------
time=2806505
mem_heap_B=347407
mem_heap_extra_B=521
mem_stacks_B=0
heap_tree=empty
#-----------
snapshot=28
#-----------
time=2828826
mem_heap_B=347924
mem_heap_extra_B=620
mem_stacks_B=0
heap_tree=empty
#-----------
snapshot=29
#-----------
time=2858597
mem_heap_B=348050
mem_heap_extra_B=718
mem_stacks_B=0
heap_tree=empty
#-----------
snapshot=30
#-----------
time=2880714
mem_heap_B=348504
mem_heap_extra_B=712
mem_stacks_B=0
heap_tree=empty
#-----------
snapshot=31
#-----------
time=2917861
mem_heap_B=348900
mem_heap_extra_B=748
mem_stacks_B=0
heap_tree=detailed
n7: 348900 (heap allocation functions) malloc/new/new[], --alloc-fns, etc.
n1: 72704 0x49077B9: ??? (in /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.30)
n1: 72704 0x4004ABD: call_init (dl-init.c:70)
n1: 72704 0x4004ABD: call_init (dl-init.c:26)
n1: 72704 0x4004BA3: _dl_init (dl-init.c:117)
n0: 72704 0x401AA5F: ??? (in /usr/lib/x86_64-linux-gnu/ld-linux-x86-64.so.2)
n1: 65535 0x12322B: run_udp_server() (in /home/brett/Documents/code/c++/Insane_DNS/cmake-build-release/insane_dns)
n1: 65535 0x49364A2: ??? (in /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.30)
n1: 65535 0x4B25043: start_thread (pthread_create.c:442)
n0: 65535 0x4BA485F: clone (clone.S:100)
n1: 65535 0x123247: run_udp_server() (in /home/brett/Documents/code/c++/Insane_DNS/cmake-build-release/insane_dns)
n1: 65535 0x49364A2: ??? (in /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.30)
n1: 65535 0x4B25043: start_thread (pthread_create.c:442)
n0: 65535 0x4BA485F: clone (clone.S:100)
n1: 65535 0x125FBD: run_tcp_server() (in /home/brett/Documents/code/c++/Insane_DNS/cmake-build-release/insane_dns)
n1: 65535 0x49364A2: ??? (in /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.30)
n1: 65535 0x4B25043: start_thread (pthread_create.c:442)
n0: 65535 0x4BA485F: clone (clone.S:100)
n1: 65535 0x125FD9: run_tcp_server() (in /home/brett/Documents/code/c++/Insane_DNS/cmake-build-release/insane_dns)
n1: 65535 0x49364A2: ??? (in /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.30)
n1: 65535 0x4B25043: start_thread (pthread_create.c:442)
n0: 65535 0x4BA485F: clone (clone.S:100)
n0: 8544 in 50 places, all below massif's threshold (1.00%)
n1: 5512 0x13B9D6: std::__detail::_MakeUniq<blt::logging::tag_map>::__single_object std::make_unique<blt::logging::tag_map, blt::logging::tag_map>(blt::logging::tag_map&&) (in /home/brett/Documents/code/c++/Insane_DNS/cmake-build-release/insane_dns)
n1: 5512 0x121259: __static_initialization_and_destruction_0(int, int) [clone .constprop.0] (in /home/brett/Documents/code/c++/Insane_DNS/cmake-build-release/insane_dns)
n1: 5512 0x4AC32F5: call_init (libc-start.c:145)
n1: 5512 0x4AC32F5: __libc_start_main@@GLIBC_2.34 (libc-start.c:347)
n0: 5512 0x121440: (below main) (in /home/brett/Documents/code/c++/Insane_DNS/cmake-build-release/insane_dns)
#-----------
snapshot=32
#-----------
time=2962541
mem_heap_B=348485
mem_heap_extra_B=763
mem_stacks_B=0
heap_tree=empty
#-----------
snapshot=33
#-----------
time=2992631
mem_heap_B=348959
mem_heap_extra_B=769
mem_stacks_B=0
heap_tree=detailed
n7: 348959 (heap allocation functions) malloc/new/new[], --alloc-fns, etc.
n1: 72704 0x49077B9: ??? (in /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.30)
n1: 72704 0x4004ABD: call_init (dl-init.c:70)
n1: 72704 0x4004ABD: call_init (dl-init.c:26)
n1: 72704 0x4004BA3: _dl_init (dl-init.c:117)
n0: 72704 0x401AA5F: ??? (in /usr/lib/x86_64-linux-gnu/ld-linux-x86-64.so.2)
n1: 65535 0x12322B: run_udp_server() (in /home/brett/Documents/code/c++/Insane_DNS/cmake-build-release/insane_dns)
n1: 65535 0x49364A2: ??? (in /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.30)
n1: 65535 0x4B25043: start_thread (pthread_create.c:442)
n0: 65535 0x4BA485F: clone (clone.S:100)
n1: 65535 0x123247: run_udp_server() (in /home/brett/Documents/code/c++/Insane_DNS/cmake-build-release/insane_dns)
n1: 65535 0x49364A2: ??? (in /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.30)
n1: 65535 0x4B25043: start_thread (pthread_create.c:442)
n0: 65535 0x4BA485F: clone (clone.S:100)
n1: 65535 0x125FBD: run_tcp_server() (in /home/brett/Documents/code/c++/Insane_DNS/cmake-build-release/insane_dns)
n1: 65535 0x49364A2: ??? (in /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.30)
n1: 65535 0x4B25043: start_thread (pthread_create.c:442)
n0: 65535 0x4BA485F: clone (clone.S:100)
n1: 65535 0x125FD9: run_tcp_server() (in /home/brett/Documents/code/c++/Insane_DNS/cmake-build-release/insane_dns)
n1: 65535 0x49364A2: ??? (in /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.30)
n1: 65535 0x4B25043: start_thread (pthread_create.c:442)
n0: 65535 0x4BA485F: clone (clone.S:100)
n0: 8603 in 50 places, all below massif's threshold (1.00%)
n1: 5512 0x13B9D6: std::__detail::_MakeUniq<blt::logging::tag_map>::__single_object std::make_unique<blt::logging::tag_map, blt::logging::tag_map>(blt::logging::tag_map&&) (in /home/brett/Documents/code/c++/Insane_DNS/cmake-build-release/insane_dns)
n1: 5512 0x121259: __static_initialization_and_destruction_0(int, int) [clone .constprop.0] (in /home/brett/Documents/code/c++/Insane_DNS/cmake-build-release/insane_dns)
n1: 5512 0x4AC32F5: call_init (libc-start.c:145)
n1: 5512 0x4AC32F5: __libc_start_main@@GLIBC_2.34 (libc-start.c:347)
n0: 5512 0x121440: (below main) (in /home/brett/Documents/code/c++/Insane_DNS/cmake-build-release/insane_dns)
#-----------
snapshot=34
#-----------
time=3022333
mem_heap_B=348515
mem_heap_extra_B=765
mem_stacks_B=0
heap_tree=empty
#-----------
snapshot=35
#-----------
time=3052343
mem_heap_B=348485
mem_heap_extra_B=763
mem_stacks_B=0
heap_tree=empty
#-----------
snapshot=36
#-----------
time=3074669
mem_heap_B=348447
mem_heap_extra_B=761
mem_stacks_B=0
heap_tree=empty
#-----------
snapshot=37
#-----------
time=3102477
mem_heap_B=348046
mem_heap_extra_B=730
mem_stacks_B=0
heap_tree=empty
#-----------
snapshot=38
#-----------
time=3148713
mem_heap_B=348228
mem_heap_extra_B=764
mem_stacks_B=0
heap_tree=empty
#-----------
snapshot=39
#-----------
time=3186244
mem_heap_B=348198
mem_heap_extra_B=778
mem_stacks_B=0
heap_tree=empty
#-----------
snapshot=40
#-----------
time=3233405
mem_heap_B=347703
mem_heap_extra_B=601
mem_stacks_B=0
heap_tree=empty
#-----------
snapshot=41
#-----------
time=3261461
mem_heap_B=348569
mem_heap_extra_B=639
mem_stacks_B=0
heap_tree=empty
#-----------
snapshot=42
#-----------
time=3298648
mem_heap_B=347767
mem_heap_extra_B=601
mem_stacks_B=0
heap_tree=empty
#-----------
snapshot=43
#-----------
time=3337191
mem_heap_B=348547
mem_heap_extra_B=661
mem_stacks_B=0
heap_tree=empty
#-----------
snapshot=44
#-----------
time=3365261
mem_heap_B=348094
mem_heap_extra_B=546
mem_stacks_B=0
heap_tree=empty
#-----------
snapshot=45
#-----------
time=3431516
mem_heap_B=347407
mem_heap_extra_B=521
mem_stacks_B=0
heap_tree=empty
#-----------
snapshot=46
#-----------
time=3469646
mem_heap_B=348563
mem_heap_extra_B=629
mem_stacks_B=0
heap_tree=empty
#-----------
snapshot=47
#-----------
time=3516029
mem_heap_B=347680
mem_heap_extra_B=624
mem_stacks_B=0
heap_tree=empty
#-----------
snapshot=48
#-----------
time=3562998
mem_heap_B=348678
mem_heap_extra_B=690
mem_stacks_B=0
heap_tree=empty
#-----------
snapshot=49
#-----------
time=3599873
mem_heap_B=348011
mem_heap_extra_B=701
mem_stacks_B=0
heap_tree=empty
#-----------
snapshot=50
#-----------
time=3620865
mem_heap_B=341878
mem_heap_extra_B=482
mem_stacks_B=0
heap_tree=empty

View File

@ -13,8 +13,9 @@
#include <string>
#include <array>
#include <thread>
#include <iomanip> // This might be necessary
#include <iomanip>
#include <vector>
#include <typeinfo>
#include <type_traits>
#include <unordered_set>
#include "ip.h"
@ -109,6 +110,11 @@ static constexpr bool REDIRECT_ADS = true;
class send_buffer;
/**
* This data structure represents a DNS question. When constructed it will read the FULL domain as a single string, along with the QTYPE and QCLASS
* It is safe to read QDCOUNT questions by constructing this class.
* The question will be reconstructed by the send_buffer class.
*/
class question
{
friend send_buffer;
@ -142,6 +148,11 @@ class question
}
};
/**
* This data structure represents a DNS answer. When constructed it will read the FULL answer along with the associated data. It is therefore safe
* to read ANCOUNT by constructing a series of answers which read from the byte stream. This class cannot be copied but can be moved.
* The answer will be rebuilt by the send_buffer class for you.
*/
class answer
{
friend send_buffer;
@ -152,7 +163,7 @@ class answer
uint32_t TTL = 0;
uint16_t RDLENGTH = 0;
bool requires_reset = false;
unsigned char* RDATA = nullptr;
blt::scoped_buffer<unsigned char> RDATA;
public:
explicit answer(const blt::byte_reader& reader)
{
@ -161,10 +172,8 @@ class answer
reader.to(CLASS);
reader.to(TTL);
reader.to(RDLENGTH);
RDATA = new unsigned char[RDLENGTH];
reader.copy(RDATA, RDLENGTH);
BLT_TRACE("%d, %d, %d, %d, %d", NAME, TYPE, CLASS, TTL, RDLENGTH);
RDATA = blt::scoped_buffer<unsigned char>(RDLENGTH);
reader.copy(RDATA.data(), RDLENGTH);
}
[[nodiscard]] uint16_t type() const
@ -176,18 +185,17 @@ class answer
{
BLT_DEBUG("Substituting with replacement address '%s'", REPLACEMENT_IP().asString.c_str());
BLT_ASSERT(RDLENGTH == 4);
std::memcpy(RDATA, addr.octets, 4);
std::memcpy(RDATA.data(), addr.octets, 4);
}
inline void setARecord(const IPAddress& addr)
{
BLT_DEBUG("Setting to A record");
BLT_DEBUG("Setting answer to A record");
NAME = 0;
NAME |= (0b11 << 14);
requires_reset = true;
BLT_INFO(NAME);
delete[] RDATA;
RDATA = new unsigned char[4];
BLT_TRACE(NAME);
RDATA = blt::scoped_buffer<unsigned char>(4);
RDLENGTH = 4;
TYPE = 1;
CLASS = 1;
@ -205,9 +213,10 @@ class answer
}
// rule of 5
answer(const answer& answer) = delete;
// (there used to be a destructor)
answer(const answer& copy) = delete;
answer& operator=(const answer& answer) = delete;
answer& operator=(const answer& copy) = delete;
answer(answer&& move) noexcept
{
@ -216,8 +225,7 @@ class answer
CLASS = move.CLASS;
TTL = move.TTL;
RDLENGTH = move.RDLENGTH;
RDATA = move.RDATA;
move.RDATA = nullptr;
RDATA = std::move(move.RDATA);
}
answer& operator=(answer&& move) noexcept
@ -228,15 +236,12 @@ class answer
CLASS = move.CLASS;
TTL = move.TTL;
RDLENGTH = move.RDLENGTH;
RDATA = move.RDATA;
move.RDATA = nullptr;
RDATA = std::move(move.RDATA);
return *this;
}
~answer()
{
delete[] RDATA;
}
// there used to be a destructor
~answer() = default;
};
class send_buffer
@ -267,7 +272,7 @@ class send_buffer
write(t.CLASS);
write(t.TTL);
write(t.RDLENGTH);
std::memcpy(&internal_data[write_index], t.RDATA, t.RDLENGTH);
std::memcpy(&internal_data[write_index], t.RDATA.data(), t.RDLENGTH);
write_index += t.RDLENGTH;
} else if constexpr (std::is_same_v<T, question>)
{
@ -341,7 +346,7 @@ request_info handle_forward_request(MESSENGER messenger, const INFO& info, const
uint16_t questions; // yes I made this part of my library just for this :3
blt::mem::fromBytes(&input_recv_buffer[info.QUESTIONS_BEGIN], questions); // i hate little endian
BLT_INFO("Bytes received: %d with %d questions", bytes, questions);
BLT_INFO("(%s) Bytes received: %d with %d questions", blt::is_UDP_or_TCP<INFO>().c_str(), bytes, questions);
// forward to google.
size_t out_bytes;
@ -359,7 +364,8 @@ void handle_response(const INFO& info, send_buffer& return_send_buffer, request_
{
blt::byte_reader reader(forward_recv_buffer.data(), forward_recv_buffer.size(), info.HEADER_END);
BLT_INFO("Bytes answered: %d with %d answers", rq_info.number_of_bytes, rq_info.number_of_answers);
auto TYPE_STR = blt::is_UDP_or_TCP<INFO>();
BLT_INFO("(%s) Bytes answered: %d with %d answers", TYPE_STR.c_str(), rq_info.number_of_bytes, rq_info.number_of_answers);
// no one actually does multiple questions. trying to do it in dig is not easy
// and the standard isn't really designed for this (how do we handle if one question errors but the other doesn't? there is only
@ -372,7 +378,7 @@ void handle_response(const INFO& info, send_buffer& return_send_buffer, request_
answers.push_back(std::move(a));
}
BLT_INFO("DOMAIN: %s", q().c_str());
BLT_INFO("(%s) DOMAIN: %s", TYPE_STR.c_str(), q().c_str());
if (STRICT_MATCHING && BLT_CONTAINS(DISALLOWED_DOMAINS, q()))
process_answers(answers);
else if (!STRICT_MATCHING)
@ -388,7 +394,7 @@ void handle_response(const INFO& info, send_buffer& return_send_buffer, request_
return_send_buffer.write(q);
for (const answer& a : answers)
{
BLT_TRACE("Writing answer with type of %d", a.type());
BLT_TRACE("(%s) Writing answer with type of %d", TYPE_STR.c_str(), a.type());
a.reset(question_offset);
return_send_buffer.write(a);
}