From 76bc4c496d407cbbd11f0a0d9d3eebfbf64ccd2c Mon Sep 17 00:00:00 2001 From: jfreegman Date: Tue, 18 Mar 2025 21:32:41 -0400 Subject: [PATCH] refactor: TCP connection netprof objects are now owned by Messenger This allows us to have a single netprof object for all TCP client connections, which makes it easier to query and keep track of TCP network data for groupchats. Previously we were not properly querying groupchat TCP network data via the netprof API. --- auto_tests/TCP_test.c | 19 +++++++++++++++---- auto_tests/forwarding_test.c | 7 ++++++- auto_tests/onion_test.c | 18 +++++++++++++++++- toxcore/BUILD.bazel | 1 + toxcore/Messenger.c | 21 ++++++++++++++++++++- toxcore/Messenger.h | 2 ++ toxcore/TCP_connection.c | 20 ++------------------ toxcore/TCP_connection.h | 9 +-------- toxcore/group_chats.c | 3 ++- toxcore/group_common.h | 2 ++ toxcore/net_crypto.c | 19 ++----------------- toxcore/net_crypto.h | 9 +-------- toxcore/net_crypto_fuzz_test.cc | 15 +++++++++++++-- toxcore/net_profile.h | 8 ++++++++ toxcore/tox_private.c | 8 ++++---- 15 files changed, 96 insertions(+), 65 deletions(-) diff --git a/auto_tests/TCP_test.c b/auto_tests/TCP_test.c index 1cfa47432..1a3108b82 100644 --- a/auto_tests/TCP_test.c +++ b/auto_tests/TCP_test.c @@ -8,6 +8,7 @@ #include "../toxcore/TCP_server.h" #include "../toxcore/crypto_core.h" #include "../toxcore/mono_time.h" +#include "../toxcore/net_profile.h" #include "../toxcore/network.h" #include "auto_test_support.h" @@ -737,6 +738,9 @@ static void test_tcp_connection(void) Mono_Time *mono_time = mono_time_new(mem, nullptr, nullptr); Logger *logger = logger_new(mem); + Net_Profile *tcp_np = netprof_new(logger, mem); + ck_assert(tcp_np != nullptr); + tcp_data_callback_called = 0; uint8_t self_public_key[CRYPTO_PUBLIC_KEY_SIZE]; uint8_t self_secret_key[CRYPTO_SECRET_KEY_SIZE]; @@ -747,12 +751,12 @@ static void test_tcp_connection(void) TCP_Proxy_Info proxy_info; proxy_info.proxy_type = TCP_PROXY_NONE; crypto_new_keypair(rng, self_public_key, self_secret_key); - TCP_Connections *tc_1 = new_tcp_connections(logger, mem, rng, ns, mono_time, self_secret_key, &proxy_info); + TCP_Connections *tc_1 = new_tcp_connections(logger, mem, rng, ns, mono_time, self_secret_key, &proxy_info, tcp_np); ck_assert_msg(tc_1 != nullptr, "Failed to create TCP connections"); ck_assert_msg(pk_equal(tcp_connections_public_key(tc_1), self_public_key), "Wrong public key"); crypto_new_keypair(rng, self_public_key, self_secret_key); - TCP_Connections *tc_2 = new_tcp_connections(logger, mem, rng, ns, mono_time, self_secret_key, &proxy_info); + TCP_Connections *tc_2 = new_tcp_connections(logger, mem, rng, ns, mono_time, self_secret_key, &proxy_info, tcp_np); ck_assert_msg(tc_2 != nullptr, "Failed to create TCP connections"); ck_assert_msg(pk_equal(tcp_connections_public_key(tc_2), self_public_key), "Wrong public key"); @@ -815,6 +819,8 @@ static void test_tcp_connection(void) kill_tcp_connections(tc_1); kill_tcp_connections(tc_2); + netprof_kill(mem, tcp_np); + logger_kill(logger); mono_time_free(mem, mono_time); } @@ -852,6 +858,9 @@ static void test_tcp_connection2(void) Mono_Time *mono_time = mono_time_new(mem, nullptr, nullptr); Logger *logger = logger_new(mem); + Net_Profile *tcp_np = netprof_new(logger, mem); + ck_assert(tcp_np != nullptr); + tcp_oobdata_callback_called = 0; tcp_data_callback_called = 0; @@ -864,12 +873,12 @@ static void test_tcp_connection2(void) TCP_Proxy_Info proxy_info; proxy_info.proxy_type = TCP_PROXY_NONE; crypto_new_keypair(rng, self_public_key, self_secret_key); - TCP_Connections *tc_1 = new_tcp_connections(logger, mem, rng, ns, mono_time, self_secret_key, &proxy_info); + TCP_Connections *tc_1 = new_tcp_connections(logger, mem, rng, ns, mono_time, self_secret_key, &proxy_info, tcp_np); ck_assert_msg(tc_1 != nullptr, "Failed to create TCP connections"); ck_assert_msg(pk_equal(tcp_connections_public_key(tc_1), self_public_key), "Wrong public key"); crypto_new_keypair(rng, self_public_key, self_secret_key); - TCP_Connections *tc_2 = new_tcp_connections(logger, mem, rng, ns, mono_time, self_secret_key, &proxy_info); + TCP_Connections *tc_2 = new_tcp_connections(logger, mem, rng, ns, mono_time, self_secret_key, &proxy_info, tcp_np); ck_assert_msg(tc_2 != nullptr, "Failed to create TCP connections"); ck_assert_msg(pk_equal(tcp_connections_public_key(tc_2), self_public_key), "Wrong public key"); @@ -921,6 +930,8 @@ static void test_tcp_connection2(void) ck_assert_msg(tcp_data_callback_called, "could not recv packet."); ck_assert_msg(kill_tcp_connection_to(tc_1, 0) == 0, "could not kill connection to\n"); + netprof_kill(mem, tcp_np); + kill_tcp_server(tcp_s); kill_tcp_connections(tc_1); kill_tcp_connections(tc_2); diff --git a/auto_tests/forwarding_test.c b/auto_tests/forwarding_test.c index a1b8d6d24..8172271ce 100644 --- a/auto_tests/forwarding_test.c +++ b/auto_tests/forwarding_test.c @@ -96,6 +96,7 @@ typedef struct Forwarding_Subtox { Logger *log; Mono_Time *mono_time; Networking_Core *net; + Net_Profile *tcp_np; DHT *dht; Net_Crypto *c; Forwarding *forwarding; @@ -126,8 +127,11 @@ static Forwarding_Subtox *new_forwarding_subtox(const Memory *mem, bool no_udp, subtox->dht = new_dht(subtox->log, mem, rng, ns, subtox->mono_time, subtox->net, true, true); + subtox->tcp_np = netprof_new(subtox->log, mem); + ck_assert(subtox->tcp_np != nullptr); + const TCP_Proxy_Info inf = {{{{0}}}}; - subtox->c = new_net_crypto(subtox->log, mem, rng, ns, subtox->mono_time, subtox->dht, &inf); + subtox->c = new_net_crypto(subtox->log, mem, rng, ns, subtox->mono_time, subtox->dht, &inf, subtox->tcp_np); subtox->forwarding = new_forwarding(subtox->log, mem, rng, subtox->mono_time, subtox->dht); ck_assert(subtox->forwarding != nullptr); @@ -143,6 +147,7 @@ static void kill_forwarding_subtox(const Memory *mem, Forwarding_Subtox *subtox) kill_announcements(subtox->announce); kill_forwarding(subtox->forwarding); kill_net_crypto(subtox->c); + netprof_kill(mem, subtox->tcp_np); kill_dht(subtox->dht); kill_networking(subtox->net); mono_time_free(mem, subtox->mono_time); diff --git a/auto_tests/onion_test.c b/auto_tests/onion_test.c index b73ffbd16..46c70d9e1 100644 --- a/auto_tests/onion_test.c +++ b/auto_tests/onion_test.c @@ -396,6 +396,7 @@ static void test_basic(void) typedef struct { Logger *log; Mono_Time *mono_time; + Net_Profile *tcp_np; Onion *onion; Onion_Announce *onion_a; Onion_Client *onion_c; @@ -471,10 +472,24 @@ static Onions *new_onions(const Memory *mem, const Random *rng, uint16_t port, u return nullptr; } + on->tcp_np = netprof_new(on->log, mem); + + if (!on->tcp_np) { + kill_onion_announce(on->onion_a); + kill_onion(on->onion); + kill_dht(dht); + kill_networking(net); + mono_time_free(mem, on->mono_time); + logger_kill(on->log); + free(on); + return nullptr; + } + TCP_Proxy_Info inf = {{{{0}}}}; - on->onion_c = new_onion_client(on->log, mem, rng, on->mono_time, new_net_crypto(on->log, mem, rng, ns, on->mono_time, dht, &inf)); + on->onion_c = new_onion_client(on->log, mem, rng, on->mono_time, new_net_crypto(on->log, mem, rng, ns, on->mono_time, dht, &inf, on->tcp_np)); if (!on->onion_c) { + netprof_kill(mem, on->tcp_np); kill_onion_announce(on->onion_a); kill_onion(on->onion); kill_dht(dht); @@ -506,6 +521,7 @@ static void kill_onions(const Memory *mem, Onions *on) kill_onion_announce(on->onion_a); kill_onion(on->onion); kill_net_crypto(c); + netprof_kill(mem, on->tcp_np); kill_dht(dht); kill_networking(net); mono_time_free(mem, on->mono_time); diff --git a/toxcore/BUILD.bazel b/toxcore/BUILD.bazel index 1f2549fac..2eae5931a 100644 --- a/toxcore/BUILD.bazel +++ b/toxcore/BUILD.bazel @@ -1058,6 +1058,7 @@ cc_library( ":mem", ":mono_time", ":net_crypto", + ":net_profile", ":network", ":onion", ":onion_announce", diff --git a/toxcore/Messenger.c b/toxcore/Messenger.c index b89f831e1..2d25abda5 100644 --- a/toxcore/Messenger.c +++ b/toxcore/Messenger.c @@ -34,6 +34,7 @@ #include "mem.h" #include "mono_time.h" #include "net_crypto.h" +#include "net_profile.h" #include "network.h" #include "onion.h" #include "onion_announce.h" @@ -3531,11 +3532,24 @@ Messenger *new_messenger(Mono_Time *mono_time, const Memory *mem, const Random * return nullptr; } - m->net_crypto = new_net_crypto(m->log, m->mem, m->rng, m->ns, m->mono_time, m->dht, &options->proxy_info); + m->tcp_np = netprof_new(m->log, mem); + + if (m->tcp_np == nullptr) { + LOGGER_WARNING(m->log, "TCP netprof initialisation failed"); + kill_dht(m->dht); + kill_networking(m->net); + friendreq_kill(m->fr); + logger_kill(m->log); + mem_delete(mem, m); + return nullptr; + } + + m->net_crypto = new_net_crypto(m->log, m->mem, m->rng, m->ns, m->mono_time, m->dht, &options->proxy_info, m->tcp_np); if (m->net_crypto == nullptr) { LOGGER_WARNING(m->log, "net_crypto initialisation failed"); + netprof_kill(mem, m->tcp_np); kill_dht(m->dht); kill_networking(m->net); friendreq_kill(m->fr); @@ -3550,6 +3564,7 @@ Messenger *new_messenger(Mono_Time *mono_time, const Memory *mem, const Random * LOGGER_WARNING(m->log, "DHT group chats initialisation failed"); kill_net_crypto(m->net_crypto); + netprof_kill(mem, m->tcp_np); kill_dht(m->dht); kill_networking(m->net); friendreq_kill(m->fr); @@ -3589,6 +3604,7 @@ Messenger *new_messenger(Mono_Time *mono_time, const Memory *mem, const Random * kill_announcements(m->announce); kill_forwarding(m->forwarding); kill_net_crypto(m->net_crypto); + netprof_kill(mem, m->tcp_np); kill_dht(m->dht); kill_networking(m->net); friendreq_kill(m->fr); @@ -3612,6 +3628,7 @@ Messenger *new_messenger(Mono_Time *mono_time, const Memory *mem, const Random * kill_announcements(m->announce); kill_forwarding(m->forwarding); kill_net_crypto(m->net_crypto); + netprof_kill(mem, m->tcp_np); kill_dht(m->dht); kill_networking(m->net); friendreq_kill(m->fr); @@ -3637,6 +3654,7 @@ Messenger *new_messenger(Mono_Time *mono_time, const Memory *mem, const Random * kill_announcements(m->announce); kill_forwarding(m->forwarding); kill_net_crypto(m->net_crypto); + netprof_kill(mem, m->tcp_np); kill_dht(m->dht); kill_networking(m->net); friendreq_kill(m->fr); @@ -3692,6 +3710,7 @@ void kill_messenger(Messenger *m) kill_announcements(m->announce); kill_forwarding(m->forwarding); kill_net_crypto(m->net_crypto); + netprof_kill(m->mem, m->tcp_np); kill_dht(m->dht); kill_networking(m->net); diff --git a/toxcore/Messenger.h b/toxcore/Messenger.h index d9bdaf354..1286ddf13 100644 --- a/toxcore/Messenger.h +++ b/toxcore/Messenger.h @@ -25,6 +25,7 @@ #include "mem.h" #include "mono_time.h" #include "net_crypto.h" +#include "net_profile.h" #include "network.h" #include "onion.h" #include "onion_announce.h" @@ -248,6 +249,7 @@ struct Messenger { Networking_Core *net; Net_Crypto *net_crypto; + Net_Profile *tcp_np; DHT *dht; Forwarding *forwarding; diff --git a/toxcore/TCP_connection.c b/toxcore/TCP_connection.c index 20ac3ce06..42269ad55 100644 --- a/toxcore/TCP_connection.c +++ b/toxcore/TCP_connection.c @@ -1596,7 +1596,7 @@ int set_tcp_onion_status(TCP_Connections *tcp_c, bool status) * Returns NULL on failure. */ TCP_Connections *new_tcp_connections(const Logger *logger, const Memory *mem, const Random *rng, const Network *ns, - Mono_Time *mono_time, const uint8_t *secret_key, const TCP_Proxy_Info *proxy_info) + Mono_Time *mono_time, const uint8_t *secret_key, const TCP_Proxy_Info *proxy_info, Net_Profile *tcp_np) { assert(logger != nullptr); assert(mem != nullptr); @@ -1614,14 +1614,7 @@ TCP_Connections *new_tcp_connections(const Logger *logger, const Memory *mem, co return nullptr; } - Net_Profile *np = netprof_new(logger, mem); - - if (np == nullptr) { - mem_delete(mem, temp); - return nullptr; - } - - temp->net_profile = np; + temp->net_profile = tcp_np; temp->logger = logger; temp->mem = mem; temp->rng = rng; @@ -1736,17 +1729,8 @@ void kill_tcp_connections(TCP_Connections *tcp_c) crypto_memzero(tcp_c->self_secret_key, sizeof(tcp_c->self_secret_key)); - netprof_kill(tcp_c->mem, tcp_c->net_profile); mem_delete(tcp_c->mem, tcp_c->tcp_connections); mem_delete(tcp_c->mem, tcp_c->connections); mem_delete(tcp_c->mem, tcp_c); } -const Net_Profile *tcp_connection_get_client_net_profile(const TCP_Connections *tcp_c) -{ - if (tcp_c == nullptr) { - return nullptr; - } - - return tcp_c->net_profile; -} diff --git a/toxcore/TCP_connection.h b/toxcore/TCP_connection.h index 33388d5f8..3ff217350 100644 --- a/toxcore/TCP_connection.h +++ b/toxcore/TCP_connection.h @@ -307,7 +307,7 @@ uint32_t tcp_copy_connected_relays_index(const TCP_Connections *tcp_c, Node_form */ non_null() TCP_Connections *new_tcp_connections(const Logger *logger, const Memory *mem, const Random *rng, const Network *ns, - Mono_Time *mono_time, const uint8_t *secret_key, const TCP_Proxy_Info *proxy_info); + Mono_Time *mono_time, const uint8_t *secret_key, const TCP_Proxy_Info *proxy_info, Net_Profile *tcp_np); non_null() int kill_tcp_relay_connection(TCP_Connections *tcp_c, int tcp_connections_number); @@ -318,11 +318,4 @@ void do_tcp_connections(const Logger *logger, TCP_Connections *tcp_c, void *user nullable(1) void kill_tcp_connections(TCP_Connections *tcp_c); -/** @brief a pointer to the tcp client net profile associated with tcp_c. - * - * @retval null if tcp_c is null. - */ -non_null() -const Net_Profile *tcp_connection_get_client_net_profile(const TCP_Connections *tcp_c); - #endif /* C_TOXCORE_TOXCORE_TCP_CONNECTION_H */ diff --git a/toxcore/group_chats.c b/toxcore/group_chats.c index 8ba655cb5..22f60bf3a 100644 --- a/toxcore/group_chats.c +++ b/toxcore/group_chats.c @@ -7418,7 +7418,7 @@ static bool init_gc_tcp_connection(const GC_Session *c, GC_Chat *chat) const Messenger *m = c->messenger; chat->tcp_conn = new_tcp_connections(chat->log, chat->mem, chat->rng, m->ns, chat->mono_time, chat->self_secret_key.enc, - &m->options.proxy_info); + &m->options.proxy_info, c->tcp_np); if (chat->tcp_conn == nullptr) { return false; @@ -8274,6 +8274,7 @@ GC_Session *new_dht_groupchats(Messenger *m) c->messenger = m; c->announces_list = m->group_announce; + c->tcp_np = m->tcp_np; networking_registerhandler(m->net, NET_PACKET_GC_LOSSLESS, &handle_gc_udp_packet, m); networking_registerhandler(m->net, NET_PACKET_GC_LOSSY, &handle_gc_udp_packet, m); diff --git a/toxcore/group_common.h b/toxcore/group_common.h index 4c2e98ae5..9be3377be 100644 --- a/toxcore/group_common.h +++ b/toxcore/group_common.h @@ -20,6 +20,7 @@ #include "logger.h" #include "mem.h" #include "mono_time.h" +#include "net_profile.h" #include "network.h" #define MAX_GC_PART_MESSAGE_SIZE 128 @@ -377,6 +378,7 @@ typedef void gc_rejected_cb(const Messenger *m, uint32_t group_number, unsigned typedef struct GC_Session { Messenger *messenger; GC_Chat *chats; + Net_Profile *tcp_np; struct GC_Announces_List *announces_list; uint32_t chats_index; diff --git a/toxcore/net_crypto.c b/toxcore/net_crypto.c index b9602415c..bf9f1d595 100644 --- a/toxcore/net_crypto.c +++ b/toxcore/net_crypto.c @@ -2988,7 +2988,7 @@ void load_secret_key(Net_Crypto *c, const uint8_t *sk) * Sets all the global connection variables to their default values. */ Net_Crypto *new_net_crypto(const Logger *log, const Memory *mem, const Random *rng, const Network *ns, - Mono_Time *mono_time, DHT *dht, const TCP_Proxy_Info *proxy_info) + Mono_Time *mono_time, DHT *dht, const TCP_Proxy_Info *proxy_info, Net_Profile *tcp_np) { if (dht == nullptr) { return nullptr; @@ -3006,7 +3006,7 @@ Net_Crypto *new_net_crypto(const Logger *log, const Memory *mem, const Random *r temp->mono_time = mono_time; temp->ns = ns; - temp->tcp_c = new_tcp_connections(log, mem, rng, ns, mono_time, dht_get_self_secret_key(dht), proxy_info); + temp->tcp_c = new_tcp_connections(log, mem, rng, ns, mono_time, dht_get_self_secret_key(dht), proxy_info, tcp_np); if (temp->tcp_c == nullptr) { mem_delete(mem, temp); @@ -3098,18 +3098,3 @@ void kill_net_crypto(Net_Crypto *c) crypto_memzero(c, sizeof(Net_Crypto)); mem_delete(mem, c); } - -const Net_Profile *nc_get_tcp_client_net_profile(const Net_Crypto *c) -{ - if (c == nullptr) { - return nullptr; - } - - const TCP_Connections *tcp_c = nc_get_tcp_c(c); - - if (tcp_c == nullptr) { - return nullptr; - } - - return tcp_connection_get_client_net_profile(tcp_c); -} diff --git a/toxcore/net_crypto.h b/toxcore/net_crypto.h index ee89a9eeb..894707005 100644 --- a/toxcore/net_crypto.h +++ b/toxcore/net_crypto.h @@ -406,7 +406,7 @@ void load_secret_key(Net_Crypto *c, const uint8_t *sk); */ non_null() Net_Crypto *new_net_crypto(const Logger *log, const Memory *mem, const Random *rng, const Network *ns, - Mono_Time *mono_time, DHT *dht, const TCP_Proxy_Info *proxy_info); + Mono_Time *mono_time, DHT *dht, const TCP_Proxy_Info *proxy_info, Net_Profile *tcp_np); /** return the optimal interval in ms for running do_net_crypto. */ non_null() @@ -419,13 +419,6 @@ void do_net_crypto(Net_Crypto *c, void *userdata); nullable(1) void kill_net_crypto(Net_Crypto *c); -/** - * Returns a pointer to the net profile object for the TCP client associated with `c`. - * Returns null if `c` is null or the TCP_Connections associated with `c` is null. - */ -non_null() -const Net_Profile *nc_get_tcp_client_net_profile(const Net_Crypto *c); - #ifdef __cplusplus } /* extern "C" */ #endif diff --git a/toxcore/net_crypto_fuzz_test.cc b/toxcore/net_crypto_fuzz_test.cc index e5add8d42..96ee86fca 100644 --- a/toxcore/net_crypto_fuzz_test.cc +++ b/toxcore/net_crypto_fuzz_test.cc @@ -10,6 +10,7 @@ #include "../testing/fuzzing/fuzz_tox.hh" #include "DHT.h" #include "TCP_client.h" +#include "net_profile.h" #include "network.h" namespace { @@ -65,12 +66,20 @@ void TestNetCrypto(Fuzz_Data &input) return; } + Net_Profile *tcp_np = netprof_new(logger.get(), sys.mem.get()); + + if (tcp_np == nullptr) { + return; + } + const TCP_Proxy_Info proxy_info = {0}; - const Ptr net_crypto(new_net_crypto(logger.get(), sys.mem.get(), sys.rng.get(), - sys.ns.get(), mono_time.get(), dht.get(), &proxy_info), + const Ptr net_crypto( + new_net_crypto(logger.get(), sys.mem.get(), sys.rng.get(), sys.ns.get(), mono_time.get(), + dht.get(), &proxy_info, tcp_np), kill_net_crypto); if (net_crypto == nullptr) { + netprof_kill(sys.mem.get(), tcp_np); return; } @@ -81,6 +90,8 @@ void TestNetCrypto(Fuzz_Data &input) // "Sleep" sys.clock += System::BOOTSTRAP_ITERATION_INTERVAL; } + + netprof_kill(sys.mem.get(), tcp_np); } } // namespace diff --git a/toxcore/net_profile.h b/toxcore/net_profile.h index a4c65167d..be16f671d 100644 --- a/toxcore/net_profile.h +++ b/toxcore/net_profile.h @@ -15,6 +15,10 @@ #include "logger.h" #include "mem.h" +#ifdef __cplusplus +extern "C" { +#endif + /* The max number of packet ID's (must fit inside one byte) */ #define NET_PROF_MAX_PACKET_IDS 256 @@ -70,4 +74,8 @@ Net_Profile *netprof_new(const Logger *log, const Memory *mem); non_null(1) nullable(2) void netprof_kill(const Memory *mem, Net_Profile *net_profile); +#ifdef __cplusplus +} /* extern "C" */ +#endif + #endif /* C_TOXCORE_TOXCORE_NET_PROFILE_H */ diff --git a/toxcore/tox_private.c b/toxcore/tox_private.c index e215c37df..dd9c63cd3 100644 --- a/toxcore/tox_private.c +++ b/toxcore/tox_private.c @@ -237,7 +237,7 @@ uint64_t tox_netprof_get_packet_id_count(const Tox *tox, Tox_Netprof_Packet_Type tox_lock(tox); - const Net_Profile *tcp_c_profile = nc_get_tcp_client_net_profile(tox->m->net_crypto); + const Net_Profile *tcp_c_profile = tox->m->tcp_np; const Net_Profile *tcp_s_profile = tcp_server_get_net_profile(tox->m->tcp_server); const Packet_Direction dir = (Packet_Direction) direction; @@ -286,7 +286,7 @@ uint64_t tox_netprof_get_packet_total_count(const Tox *tox, Tox_Netprof_Packet_T tox_lock(tox); - const Net_Profile *tcp_c_profile = nc_get_tcp_client_net_profile(tox->m->net_crypto); + const Net_Profile *tcp_c_profile = tox->m->tcp_np; const Net_Profile *tcp_s_profile = tcp_server_get_net_profile(tox->m->tcp_server); const Packet_Direction dir = (Packet_Direction) direction; @@ -335,7 +335,7 @@ uint64_t tox_netprof_get_packet_id_bytes(const Tox *tox, Tox_Netprof_Packet_Type tox_lock(tox); - const Net_Profile *tcp_c_profile = nc_get_tcp_client_net_profile(tox->m->net_crypto); + const Net_Profile *tcp_c_profile = tox->m->tcp_np; const Net_Profile *tcp_s_profile = tcp_server_get_net_profile(tox->m->tcp_server); const Packet_Direction dir = (Packet_Direction) direction; @@ -384,7 +384,7 @@ uint64_t tox_netprof_get_packet_total_bytes(const Tox *tox, Tox_Netprof_Packet_T tox_lock(tox); - const Net_Profile *tcp_c_profile = nc_get_tcp_client_net_profile(tox->m->net_crypto); + const Net_Profile *tcp_c_profile = tox->m->tcp_np; const Net_Profile *tcp_s_profile = tcp_server_get_net_profile(tox->m->tcp_server); const Packet_Direction dir = (Packet_Direction) direction;