diff --git a/src/lib/arch/IArchNetwork.h b/src/lib/arch/IArchNetwork.h index 1af270f4e..d3d45cdb3 100644 --- a/src/lib/arch/IArchNetwork.h +++ b/src/lib/arch/IArchNetwork.h @@ -274,4 +274,15 @@ public: //@} virtual void init() = 0; + +private: + /** + * @brief throwError, Used to throw network errors + */ + [[noreturn]] virtual void throwError(int) const = 0; + + /** + * @brief throwNameError, Errors related to client names. + */ + [[noreturn]] virtual void throwNameError(int) const = 0; }; diff --git a/src/lib/arch/unix/ArchNetworkBSD.cpp b/src/lib/arch/unix/ArchNetworkBSD.cpp index 9e3d31760..e706c82aa 100644 --- a/src/lib/arch/unix/ArchNetworkBSD.cpp +++ b/src/lib/arch/unix/ArchNetworkBSD.cpp @@ -742,7 +742,7 @@ const int *ArchNetworkBSD::getUnblockPipeForThread(ArchThread thread) return unblockPipe; } -void ArchNetworkBSD::throwError(int err) const +[[noreturn]] void ArchNetworkBSD::throwError(int err) const { switch (err) { case EINTR: @@ -813,7 +813,7 @@ void ArchNetworkBSD::throwError(int err) const } } -void ArchNetworkBSD::throwNameError(int err) const +[[noreturn]] void ArchNetworkBSD::throwNameError(int err) const { static const char *s_msg[] = { "The specified host is unknown", "The requested name is valid but does not have an IP address", diff --git a/src/lib/arch/unix/ArchNetworkBSD.h b/src/lib/arch/unix/ArchNetworkBSD.h index ce3d844f8..5cbf35b3a 100644 --- a/src/lib/arch/unix/ArchNetworkBSD.h +++ b/src/lib/arch/unix/ArchNetworkBSD.h @@ -104,10 +104,9 @@ private: const int *getUnblockPipe(); const int *getUnblockPipeForThread(ArchThread); void setBlockingOnSocket(int fd, bool blocking) const; - void throwError(int) const; - void throwNameError(int) const; + [[noreturn]] void throwError(int) const override; + [[noreturn]] void throwNameError(int) const override; -private: std::shared_ptr m_pDeps; std::mutex m_mutex; }; diff --git a/src/lib/arch/win32/ArchNetworkWinsock.cpp b/src/lib/arch/win32/ArchNetworkWinsock.cpp index 686cf30d2..a1f9fea8e 100644 --- a/src/lib/arch/win32/ArchNetworkWinsock.cpp +++ b/src/lib/arch/win32/ArchNetworkWinsock.cpp @@ -840,7 +840,7 @@ bool ArchNetworkWinsock::isEqualAddr(ArchNetAddress a, ArchNetAddress b) return (a == b || (a->m_len == b->m_len && memcmp(&a->m_addr, &b->m_addr, a->m_len) == 0)); } -void ArchNetworkWinsock::throwError(int err) +[[noreturn]] void ArchNetworkWinsock::throwError(int err) const { switch (err) { case WSAEACCES: @@ -910,7 +910,7 @@ void ArchNetworkWinsock::throwError(int err) } } -void ArchNetworkWinsock::throwNameError(int err) +[[noreturn]] void ArchNetworkWinsock::throwNameError(int err) const { switch (err) { case WSAHOST_NOT_FOUND: diff --git a/src/lib/arch/win32/ArchNetworkWinsock.h b/src/lib/arch/win32/ArchNetworkWinsock.h index c0f15a8ae..a1785ff2a 100644 --- a/src/lib/arch/win32/ArchNetworkWinsock.h +++ b/src/lib/arch/win32/ArchNetworkWinsock.h @@ -92,10 +92,9 @@ private: void setBlockingOnSocket(SOCKET, bool blocking); - void throwError(int); - void throwNameError(int); + [[noreturn]] void throwError(int) const override; + [[noreturn]] void throwNameError(int) const override; -private: using EventList = std::list; std::mutex m_mutex;