From 80646e1ae2c0a539fe0b343257fac9c6736b04d3 Mon Sep 17 00:00:00 2001 From: Leif Hedstrom Date: Thu, 14 May 2020 22:53:27 -0600 Subject: [PATCH 1/2] clang-analyzer: code clone in get_proxy_protocol_addr --- iocore/net/P_NetVConnection.h | 18 ++++++------------ 1 file changed, 6 insertions(+), 12 deletions(-) diff --git a/iocore/net/P_NetVConnection.h b/iocore/net/P_NetVConnection.h index 679cf0b10ed..fb38e4ce6cd 100644 --- a/iocore/net/P_NetVConnection.h +++ b/iocore/net/P_NetVConnection.h @@ -89,18 +89,12 @@ NetVConnection::get_local_port() inline sockaddr const * NetVConnection::get_proxy_protocol_addr(const ProxyProtocolData src_or_dst) { - if (src_or_dst == ProxyProtocolData::SRC) { - if ((pp_info.src_addr.isValid() && pp_info.src_addr.port() != 0) || - (ats_is_ip4(&pp_info.src_addr) && INADDR_ANY != ats_ip4_addr_cast(&pp_info.src_addr)) // IPv4 - || (ats_is_ip6(&pp_info.src_addr) && !IN6_IS_ADDR_UNSPECIFIED(&pp_info.src_addr.sin6.sin6_addr))) { - return &pp_info.src_addr.sa; - } - } else { - if ((pp_info.dst_addr.isValid() && pp_info.dst_addr.port() != 0) || - (ats_is_ip4(&pp_info.dst_addr) && INADDR_ANY != ats_ip4_addr_cast(&pp_info.dst_addr)) // IPv4 - || (ats_is_ip6(&pp_info.dst_addr) && !IN6_IS_ADDR_UNSPECIFIED(&pp_info.dst_addr.sin6.sin6_addr))) { - return &pp_info.dst_addr.sa; - } + const IpEndpoint &addr = (src_or_dst == ProxyProtocolData::SRC ? pp_info.src_addr : pp_info.dst_addr); + + if ((addr.isValid() && addr.port() != 0) || (ats_is_ip4(&addr) && INADDR_ANY != ats_ip4_addr_cast(&addr)) // IPv4 + || (ats_is_ip6(&addr) && !IN6_IS_ADDR_UNSPECIFIED(&addr.sin6.sin6_addr))) { + return &addr.sa; } + return nullptr; } From d457c38f942fea873cb126555f11e52f8f2f80f9 Mon Sep 17 00:00:00 2001 From: Leif Hedstrom Date: Fri, 15 May 2020 14:21:17 -0600 Subject: [PATCH 2/2] Per Bryan's suggestion, make the method const --- iocore/net/I_NetVConnection.h | 2 +- iocore/net/P_NetVConnection.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/iocore/net/I_NetVConnection.h b/iocore/net/I_NetVConnection.h index 1b35a1dbdf4..97df42ceb21 100644 --- a/iocore/net/I_NetVConnection.h +++ b/iocore/net/I_NetVConnection.h @@ -843,7 +843,7 @@ class NetVConnection : public VConnection, public PluginUserArgs