From ab7d1753222fc7543351b4e81fcfcdd0d3781d32 Mon Sep 17 00:00:00 2001 From: Adrien Beraud Date: Tue, 7 Mar 2017 22:48:10 +0100 Subject: [PATCH] network engine: make buffer length depend on HASH_LEN --- include/opendht/network_engine.h | 4 ++-- src/network_engine.cpp | 10 ++++------ 2 files changed, 6 insertions(+), 8 deletions(-) diff --git a/include/opendht/network_engine.h b/include/opendht/network_engine.h index 3920a7ab..4c6a3865 100644 --- a/include/opendht/network_engine.h +++ b/include/opendht/network_engine.h @@ -449,9 +449,9 @@ private: ***************/ static constexpr long unsigned MAX_REQUESTS_PER_SEC {1600}; /* the length of a node info buffer in ipv4 format */ - static const constexpr size_t NODE4_INFO_BUF_LEN {26}; + static const constexpr size_t NODE4_INFO_BUF_LEN {HASH_LEN + sizeof(in_addr) + sizeof(in_port_t)}; /* the length of a node info buffer in ipv6 format */ - static const constexpr size_t NODE6_INFO_BUF_LEN {38}; + static const constexpr size_t NODE6_INFO_BUF_LEN {HASH_LEN + sizeof(in6_addr) + sizeof(in_port_t)}; /* after a UDP reply, the period during which we tell the link layer about it */ static constexpr std::chrono::seconds UDP_REPLY_TIME {15}; diff --git a/src/network_engine.cpp b/src/network_engine.cpp index ed23933b..ed168e01 100644 --- a/src/network_engine.cpp +++ b/src/network_engine.cpp @@ -960,25 +960,23 @@ NetworkEngine::bufferNodes(sa_family_t af, const InfoHash& id, std::vectorsin_addr, sizeof(in_addr)); - memcpy(dest + HASH_LEN + sizeof(in_addr), &sin->sin_port, 2); + memcpy(dest + HASH_LEN + sizeof(in_addr), &sin->sin_port, sizeof(in_port_t)); } } else if (af == AF_INET6) { bnodes.resize(NODE6_INFO_BUF_LEN * nnode); - const constexpr size_t size = HASH_LEN + sizeof(in6_addr) + sizeof(in_port_t); // 38 for (size_t i=0; isin6_addr, sizeof(in6_addr)); - memcpy(dest + HASH_LEN + sizeof(in6_addr), &sin6->sin6_port, 2); + memcpy(dest + HASH_LEN + sizeof(in6_addr), &sin6->sin6_port, sizeof(in_port_t)); } } return bnodes;