diff options
author | Vasil Dimov <vd@FreeBSD.org> | 2022-06-21 15:23:37 +0200 |
---|---|---|
committer | Vasil Dimov <vd@FreeBSD.org> | 2022-06-22 09:19:43 +0200 |
commit | a724c39606273dfe4c6f9887ef8b77d0a98f1b34 (patch) | |
tree | 092db93c07cbfce5dd25cc5353a342197390a619 | |
parent | e8ff3f0c52e7512a580bc907dc72e5bb141b4217 (diff) |
net: rename Sock::Reset() to Sock::Close() and make it private
Outside of `Sock`, `Sock::Reset()` was used in just one place (in
`i2p.cpp`) which can use the assignment operator instead.
This simplifies the public `Sock` API by having one method less.
-rw-r--r-- | src/i2p.cpp | 2 | ||||
-rw-r--r-- | src/test/fuzz/util.cpp | 9 | ||||
-rw-r--r-- | src/test/fuzz/util.h | 2 | ||||
-rw-r--r-- | src/test/sock_tests.cpp | 8 | ||||
-rw-r--r-- | src/test/util/net.h | 7 | ||||
-rw-r--r-- | src/util/sock.cpp | 35 | ||||
-rw-r--r-- | src/util/sock.h | 11 |
7 files changed, 28 insertions, 46 deletions
diff --git a/src/i2p.cpp b/src/i2p.cpp index caff8c1e69..8611984555 100644 --- a/src/i2p.cpp +++ b/src/i2p.cpp @@ -410,7 +410,7 @@ void Session::Disconnect() Log("Destroying session %s", m_session_id); } } - m_control_sock->Reset(); + m_control_sock = std::make_unique<Sock>(INVALID_SOCKET); m_session_id.clear(); } } // namespace sam diff --git a/src/test/fuzz/util.cpp b/src/test/fuzz/util.cpp index c65eef9c61..8f5e771e37 100644 --- a/src/test/fuzz/util.cpp +++ b/src/test/fuzz/util.cpp @@ -24,10 +24,10 @@ FuzzedSock::FuzzedSock(FuzzedDataProvider& fuzzed_data_provider) FuzzedSock::~FuzzedSock() { // Sock::~Sock() will be called after FuzzedSock::~FuzzedSock() and it will call - // Sock::Reset() (not FuzzedSock::Reset()!) which will call close(m_socket). + // close(m_socket) if m_socket is not INVALID_SOCKET. // Avoid closing an arbitrary file descriptor (m_socket is just a random very high number which // theoretically may concide with a real opened file descriptor). - Reset(); + m_socket = INVALID_SOCKET; } FuzzedSock& FuzzedSock::operator=(Sock&& other) @@ -36,11 +36,6 @@ FuzzedSock& FuzzedSock::operator=(Sock&& other) return *this; } -void FuzzedSock::Reset() -{ - m_socket = INVALID_SOCKET; -} - ssize_t FuzzedSock::Send(const void* data, size_t len, int flags) const { constexpr std::array send_errnos{ diff --git a/src/test/fuzz/util.h b/src/test/fuzz/util.h index 66d00b1767..0819d326fd 100644 --- a/src/test/fuzz/util.h +++ b/src/test/fuzz/util.h @@ -55,8 +55,6 @@ public: FuzzedSock& operator=(Sock&& other) override; - void Reset() override; - ssize_t Send(const void* data, size_t len, int flags) const override; ssize_t Recv(void* buf, size_t len, int flags) const override; diff --git a/src/test/sock_tests.cpp b/src/test/sock_tests.cpp index 4a5b25c61b..01a402833d 100644 --- a/src/test/sock_tests.cpp +++ b/src/test/sock_tests.cpp @@ -69,14 +69,6 @@ BOOST_AUTO_TEST_CASE(move_assignment) BOOST_CHECK(SocketIsClosed(s)); } -BOOST_AUTO_TEST_CASE(reset) -{ - const SOCKET s = CreateSocket(); - Sock sock(s); - sock.Reset(); - BOOST_CHECK(SocketIsClosed(s)); -} - #ifndef WIN32 // Windows does not have socketpair(2). static void CreateSocketPair(int s[2]) diff --git a/src/test/util/net.h b/src/test/util/net.h index 37d278645a..edb45d7c8e 100644 --- a/src/test/util/net.h +++ b/src/test/util/net.h @@ -100,7 +100,7 @@ public: m_socket = INVALID_SOCKET - 1; } - ~StaticContentsSock() override { Reset(); } + ~StaticContentsSock() override { m_socket = INVALID_SOCKET; } StaticContentsSock& operator=(Sock&& other) override { @@ -108,11 +108,6 @@ public: return *this; } - void Reset() override - { - m_socket = INVALID_SOCKET; - } - ssize_t Send(const void*, size_t len, int) const override { return len; } ssize_t Recv(void* buf, size_t len, int flags) const override diff --git a/src/util/sock.cpp b/src/util/sock.cpp index aca83d4170..1d44fbfdae 100644 --- a/src/util/sock.cpp +++ b/src/util/sock.cpp @@ -39,11 +39,11 @@ Sock::Sock(Sock&& other) other.m_socket = INVALID_SOCKET; } -Sock::~Sock() { Reset(); } +Sock::~Sock() { Close(); } Sock& Sock::operator=(Sock&& other) { - Reset(); + Close(); m_socket = other.m_socket; other.m_socket = INVALID_SOCKET; return *this; @@ -51,21 +51,6 @@ Sock& Sock::operator=(Sock&& other) SOCKET Sock::Get() const { return m_socket; } -void Sock::Reset() { - if (m_socket == INVALID_SOCKET) { - return; - } -#ifdef WIN32 - int ret = closesocket(m_socket); -#else - int ret = close(m_socket); -#endif - if (ret) { - LogPrintf("Error closing socket %d: %s\n", m_socket, NetworkErrorString(WSAGetLastError())); - } - m_socket = INVALID_SOCKET; -} - ssize_t Sock::Send(const void* data, size_t len, int flags) const { return send(m_socket, static_cast<const char*>(data), len, flags); @@ -372,6 +357,22 @@ bool Sock::IsConnected(std::string& errmsg) const } } +void Sock::Close() +{ + if (m_socket == INVALID_SOCKET) { + return; + } +#ifdef WIN32 + int ret = closesocket(m_socket); +#else + int ret = close(m_socket); +#endif + if (ret) { + LogPrintf("Error closing socket %d: %s\n", m_socket, NetworkErrorString(WSAGetLastError())); + } + m_socket = INVALID_SOCKET; +} + #ifdef WIN32 std::string NetworkErrorString(int err) { diff --git a/src/util/sock.h b/src/util/sock.h index 71c6a49321..5ca5f1b91b 100644 --- a/src/util/sock.h +++ b/src/util/sock.h @@ -69,11 +69,6 @@ public: [[nodiscard]] virtual SOCKET Get() const; /** - * Close if non-empty. - */ - virtual void Reset(); - - /** * send(2) wrapper. Equivalent to `send(this->Get(), data, len, flags);`. Code that uses this * wrapper can be unit tested if this method is overridden by a mock Sock implementation. */ @@ -245,6 +240,12 @@ protected: * Contained socket. `INVALID_SOCKET` designates the object is empty. */ SOCKET m_socket; + +private: + /** + * Close `m_socket` if it is not `INVALID_SOCKET`. + */ + void Close(); }; /** Return readable error string for a network error code */ |