You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@nifi.apache.org by sz...@apache.org on 2022/10/06 10:53:23 UTC
[nifi-minifi-cpp] 03/04: MINIFICPP-1943 Fixing memory leak in NetworkInterfaceInfo
This is an automated email from the ASF dual-hosted git repository.
szaszm pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/nifi-minifi-cpp.git
commit e812c3324d1c293a399eab0b5537ad6f42c1cc52
Author: Martin Zink <ma...@apache.org>
AuthorDate: Thu Oct 6 12:47:40 2022 +0200
MINIFICPP-1943 Fixing memory leak in NetworkInterfaceInfo
Closes #1425
Signed-off-by: Marton Szasz <sz...@apache.org>
---
libminifi/include/utils/NetworkInterfaceInfo.h | 32 ++++++++++----------------
libminifi/src/utils/NetworkInterfaceInfo.cpp | 16 ++++---------
2 files changed, 16 insertions(+), 32 deletions(-)
diff --git a/libminifi/include/utils/NetworkInterfaceInfo.h b/libminifi/include/utils/NetworkInterfaceInfo.h
index 12ac06211..5d8f7953e 100644
--- a/libminifi/include/utils/NetworkInterfaceInfo.h
+++ b/libminifi/include/utils/NetworkInterfaceInfo.h
@@ -32,12 +32,7 @@ typedef IP_ADAPTER_ADDRESSES_LH IP_ADAPTER_ADDRESSES;
struct ifaddrs;
#endif
-namespace org {
-namespace apache {
-namespace nifi {
-namespace minifi {
-
-namespace utils {
+namespace org::apache::nifi::minifi::utils {
class NetworkInterfaceInfo {
public:
NetworkInterfaceInfo(NetworkInterfaceInfo&& src) noexcept = default;
@@ -49,17 +44,18 @@ class NetworkInterfaceInfo {
explicit NetworkInterfaceInfo(const struct ifaddrs* ifa);
#endif
NetworkInterfaceInfo& operator=(NetworkInterfaceInfo&& other) noexcept = default;
- const std::string& getName() const noexcept { return name_; }
- bool hasIpV4Address() const noexcept { return !ip_v4_addresses_.empty(); }
- bool hasIpV6Address() const noexcept { return !ip_v6_addresses_.empty(); }
- bool isRunning() const noexcept { return running_; }
- bool isLoopback() const noexcept { return loopback_; }
- const std::vector<std::string>& getIpV4Addresses() const noexcept { return ip_v4_addresses_; }
- const std::vector<std::string>& getIpV6Addresses() const noexcept { return ip_v6_addresses_; }
+ [[nodiscard]] const std::string& getName() const noexcept { return name_; }
+ [[nodiscard]] bool hasIpV4Address() const noexcept { return !ip_v4_addresses_.empty(); }
+ [[nodiscard]] bool hasIpV6Address() const noexcept { return !ip_v6_addresses_.empty(); }
+ [[nodiscard]] bool isRunning() const noexcept { return running_; }
+ [[nodiscard]] bool isLoopback() const noexcept { return loopback_; }
+ [[nodiscard]] const std::vector<std::string>& getIpV4Addresses() const noexcept { return ip_v4_addresses_; }
+ [[nodiscard]] const std::vector<std::string>& getIpV6Addresses() const noexcept { return ip_v6_addresses_; }
// Traverses the ip addresses and merges them together based on the interface name
- static std::vector<NetworkInterfaceInfo> getNetworkInterfaceInfos(std::function<bool(const NetworkInterfaceInfo&)> filter = { [](const NetworkInterfaceInfo&) { return true; } },
- const std::optional<uint32_t> max_interfaces = std::nullopt);
+ static std::vector<NetworkInterfaceInfo> getNetworkInterfaceInfos(
+ const std::function<bool(const NetworkInterfaceInfo&)>& filter = { [](const NetworkInterfaceInfo&) { return true; } },
+ std::optional<uint32_t> max_interfaces = std::nullopt);
private:
void moveAddressesInto(NetworkInterfaceInfo& destination);
@@ -71,8 +67,4 @@ class NetworkInterfaceInfo {
bool loopback_;
static std::shared_ptr<core::logging::Logger> logger_;
};
-} /* namespace utils */
-} /* namespace minifi */
-} /* namespace nifi */
-} /* namespace apache */
-} /* namespace org */
+} // namespace org::apache::nifi::minifi::utils
diff --git a/libminifi/src/utils/NetworkInterfaceInfo.cpp b/libminifi/src/utils/NetworkInterfaceInfo.cpp
index 3384c6be5..fc9dc5753 100644
--- a/libminifi/src/utils/NetworkInterfaceInfo.cpp
+++ b/libminifi/src/utils/NetworkInterfaceInfo.cpp
@@ -32,11 +32,7 @@
#include <ifaddrs.h>
#endif
-namespace org {
-namespace apache {
-namespace nifi {
-namespace minifi {
-namespace utils {
+namespace org::apache::nifi::minifi::utils {
std::shared_ptr<core::logging::Logger> NetworkInterfaceInfo::logger_ = core::logging::LoggerFactory<NetworkInterfaceInfo>::getLogger();
@@ -87,7 +83,7 @@ struct HasName {
};
}
-std::vector<NetworkInterfaceInfo> NetworkInterfaceInfo::getNetworkInterfaceInfos(std::function<bool(const NetworkInterfaceInfo&)> filter,
+std::vector<NetworkInterfaceInfo> NetworkInterfaceInfo::getNetworkInterfaceInfos(const std::function<bool(const NetworkInterfaceInfo&)>& filter,
const std::optional<uint32_t> max_interfaces) {
std::vector<NetworkInterfaceInfo> network_adapters;
#ifdef WIN32
@@ -120,7 +116,7 @@ std::vector<NetworkInterfaceInfo> NetworkInterfaceInfo::getNetworkInterfaceInfos
}
#else
struct ifaddrs* interface_addresses = nullptr;
- auto cleanup = gsl::finally([interface_addresses] { freeifaddrs(interface_addresses); });
+ auto cleanup = gsl::finally([&interface_addresses] { freeifaddrs(interface_addresses); });
if (getifaddrs(&interface_addresses) == -1) {
logger_->log_error("getifaddrs failed: %s", std::strerror(errno));
return network_adapters;
@@ -158,8 +154,4 @@ void NetworkInterfaceInfo::moveAddressesInto(NetworkInterfaceInfo& destination)
move_append(std::move(ip_v6_addresses_), destination.ip_v6_addresses_);
}
-} /* namespace utils */
-} /* namespace minifi */
-} /* namespace nifi */
-} /* namespace apache */
-} /* namespace org */
+} // namespace org::apache::nifi::minifi::utils