summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--source/OSSupport/Socket.cpp6
-rw-r--r--source/OSSupport/Socket.h14
-rw-r--r--source/OSSupport/SocketThreads.cpp6
3 files changed, 15 insertions, 11 deletions
diff --git a/source/OSSupport/Socket.cpp b/source/OSSupport/Socket.cpp
index d44a343e0..cad120fbe 100644
--- a/source/OSSupport/Socket.cpp
+++ b/source/OSSupport/Socket.cpp
@@ -51,12 +51,12 @@ cSocket::xSocket cSocket::GetSocket() const
-bool cSocket::IsValid(void) const
+bool cSocket::IsValidSocket(cSocket::xSocket a_Socket)
{
#ifdef _WIN32
- return (m_Socket != INVALID_SOCKET);
+ return (a_Socket != INVALID_SOCKET);
#else // _WIN32
- return (m_Socket >= 0);
+ return (a_Socket >= 0);
#endif // else _WIN32
}
diff --git a/source/OSSupport/Socket.h b/source/OSSupport/Socket.h
index f1c3f233c..43a80dca5 100644
--- a/source/OSSupport/Socket.h
+++ b/source/OSSupport/Socket.h
@@ -19,7 +19,7 @@ public:
cSocket(xSocket a_Socket);
~cSocket();
- bool IsValid(void) const;
+ bool IsValid(void) const { return IsValidSocket(m_Socket); }
void CloseSocket();
operator xSocket() const;
@@ -43,12 +43,14 @@ public:
inline static bool IsSocketError( int a_ReturnedValue )
{
-#ifdef _WIN32
- return (a_ReturnedValue == SOCKET_ERROR || a_ReturnedValue == 0);
-#else
- return (a_ReturnedValue <= 0);
-#endif
+ #ifdef _WIN32
+ return (a_ReturnedValue == SOCKET_ERROR || a_ReturnedValue == 0);
+ #else
+ return (a_ReturnedValue <= 0);
+ #endif
}
+
+ static bool IsValidSocket(xSocket a_Socket);
struct SockAddr_In
{
diff --git a/source/OSSupport/SocketThreads.cpp b/source/OSSupport/SocketThreads.cpp
index 13336a0c4..5058f3313 100644
--- a/source/OSSupport/SocketThreads.cpp
+++ b/source/OSSupport/SocketThreads.cpp
@@ -577,7 +577,8 @@ void cSocketThreads::cSocketThread::ReadFromSockets(fd_set * a_Read)
cCSLock Lock(m_Parent->m_CS);
for (int i = m_NumSlots - 1; i >= 0; --i)
{
- if (!FD_ISSET(m_Slots[i].m_Socket.GetSocket(), a_Read))
+ cSocket::xSocket Socket = m_Slots[i].m_Socket.GetSocket();
+ if (!cSocket::IsValidSocket(Socket) || !FD_ISSET(Socket, a_Read))
{
continue;
}
@@ -621,7 +622,8 @@ void cSocketThreads::cSocketThread::WriteToSockets(fd_set * a_Write)
cCSLock Lock(m_Parent->m_CS);
for (int i = m_NumSlots - 1; i >= 0; --i)
{
- if (!m_Slots[i].m_Socket.IsValid() || !FD_ISSET(m_Slots[i].m_Socket.GetSocket(), a_Write))
+ cSocket::xSocket Socket = m_Slots[i].m_Socket.GetSocket();
+ if (!cSocket::IsValidSocket(Socket) || !FD_ISSET(Socket, a_Write))
{
continue;
}