From 7934cc78bb4a09fd6c77ae8ec7fea72115d04b97 Mon Sep 17 00:00:00 2001 From: Jonathan Naylor Date: Sun, 20 Sep 2020 21:24:13 +0100 Subject: [PATCH] Fix Windows. --- DMRGateway.cpp | 4 ++++ UDPSocket.cpp | 27 ++++++++++++++------------- UDPSocket.h | 4 +++- 3 files changed, 21 insertions(+), 14 deletions(-) diff --git a/DMRGateway.cpp b/DMRGateway.cpp index 9b88831..0a16eec 100644 --- a/DMRGateway.cpp +++ b/DMRGateway.cpp @@ -190,6 +190,8 @@ m_rxFrequency(0U) ,m_gpsd(NULL) #endif { + CUDPSocket::startup(); + m_status = new DMRGW_STATUS[3U]; m_status[1U] = DMRGWS_NONE; m_status[2U] = DMRGWS_NONE; @@ -267,6 +269,8 @@ CDMRGateway::~CDMRGateway() delete[] m_status; delete[] m_config; + + CUDPSocket::shutdown(); } int CDMRGateway::run() diff --git a/UDPSocket.cpp b/UDPSocket.cpp index 91bc86a..3f6192a 100644 --- a/UDPSocket.cpp +++ b/UDPSocket.cpp @@ -37,12 +37,6 @@ m_address_save(address), m_port_save(port), m_counter(0U) { -#if defined(_WIN32) || defined(_WIN64) - WSAData data; - int wsaRet = ::WSAStartup(MAKEWORD(2, 2), &data); - if (wsaRet != 0) - LogError("Error from WSAStartup"); -#endif for (int i = 0; i < UDP_SOCKET_MAX; i++) { m_address[i] = ""; m_port[i] = 0U; @@ -56,12 +50,6 @@ m_address_save(), m_port_save(port), m_counter(0U) { -#if defined(_WIN32) || defined(_WIN64) - WSAData data; - int wsaRet = ::WSAStartup(MAKEWORD(2, 2), &data); - if (wsaRet != 0) - LogError("Error from WSAStartup"); -#endif for (int i = 0; i < UDP_SOCKET_MAX; i++) { m_address[i] = ""; m_port[i] = 0U; @@ -72,6 +60,20 @@ m_counter(0U) CUDPSocket::~CUDPSocket() { +} + +void CUDPSocket::startup() +{ +#if defined(_WIN32) || defined(_WIN64) + WSAData data; + int wsaRet = ::WSAStartup(MAKEWORD(2, 2), &data); + if (wsaRet != 0) + LogError("Error from WSAStartup"); +#endif +} + +void CUDPSocket::shutdown() +{ #if defined(_WIN32) || defined(_WIN64) ::WSACleanup(); #endif @@ -293,7 +295,6 @@ int CUDPSocket::read(unsigned char* buffer, unsigned int length, sockaddr_storag m_counter++; address_length = size; - return len; } diff --git a/UDPSocket.h b/UDPSocket.h index dedb313..6e3846c 100644 --- a/UDPSocket.h +++ b/UDPSocket.h @@ -60,6 +60,9 @@ public: void close(); void close(const unsigned int index); + static void startup(); + static void shutdown(); + static int lookup(const std::string& hostName, unsigned int port, sockaddr_storage& address, unsigned int& address_length); static int lookup(const std::string& hostName, unsigned int port, sockaddr_storage& address, unsigned int& address_length, struct addrinfo& hints); @@ -78,4 +81,3 @@ private: }; #endif -