diff --git a/Makefile b/Makefile index a87b4ae..725581d 100644 --- a/Makefile +++ b/Makefile @@ -18,7 +18,7 @@ WIN_CXX=x86_64-w64-mingw32-g++ WIN_CFLAGS=-O3 #-g3 -fsanitize=address WIN_CXX_VANILLA_MINGW_OPT_DISABLES=-fno-tree-dce -fno-inline-small-functions WIN_CXX_MSYS2_MINGW_OPT_DISABLES=-fno-tree-dce -fno-tree-fre -fno-tree-vrp -fno-ipa-sra -WIN_CXXFLAGS=-Wall -Wno-unknown-pragmas -std=c++17 -O3 $(WIN_CXX_OPT_DISABLES) -DPROTOCOL_VERSION=$(PROTOCOL_VERSION) -DGIT_VERSION=\"$(shell git describe --tags)\" #-g3 -fsanitize=address +WIN_CXXFLAGS=-D_WIN32_WINNT=0x0601 -Wall -Wno-unknown-pragmas -std=c++17 -O3 $(WIN_CXX_OPT_DISABLES) -DPROTOCOL_VERSION=$(PROTOCOL_VERSION) -DGIT_VERSION=\"$(shell git describe --tags)\" #-g3 -fsanitize=address WIN_LDFLAGS=-static -lws2_32 -lwsock32 #-g3 -fsanitize=address WIN_SERVER=bin/winfusion.exe diff --git a/src/CNProtocol.cpp b/src/CNProtocol.cpp index 9418f6f..55e69a3 100644 --- a/src/CNProtocol.cpp +++ b/src/CNProtocol.cpp @@ -268,7 +268,7 @@ CNServer::CNServer(uint16_t p): port(p) {} void CNServer::start() { int nfds = 1, oldnfds; - struct pollfd fds[30]; // TODO: dynamically grow + PollFD fds[30]; // TODO: dynamically grow memset(&fds, 0, sizeof(fds)); @@ -281,11 +281,11 @@ void CNServer::start() { while (active) { // the timeout is to ensure shard timers are ticking //std::cout << "pre-poll\n"; - int n = poll((struct pollfd *)&fds, nfds, 200); + int n = poll((PollFD*)&fds, nfds, 200); //if (n > 0) // std::cout << "poll returned " << n << std::endl; - if (n < 0) { - perror("poll"); + if (SOCKETERROR(n)) { + std::cout << "[FATAL] poll() returned error" << std::endl; terminate(0); } diff --git a/src/CNProtocol.hpp b/src/CNProtocol.hpp index c08dfaa..26d89cc 100644 --- a/src/CNProtocol.hpp +++ b/src/CNProtocol.hpp @@ -17,6 +17,8 @@ #pragma comment(lib, "Ws2_32.lib") typedef char buffer_t; + #define PollFD WSAPOLLFD + #define poll WSAPoll #define OF_ERRNO WSAGetLastError() #define OF_EWOULD WSAEWOULDBLOCK #define SOCKETINVALID(x) (x == INVALID_SOCKET) @@ -32,6 +34,7 @@ typedef int SOCKET; typedef void buffer_t; + #define PollFD struct pollfd #define OF_ERRNO errno #define OF_EWOULD EWOULDBLOCK #define SOCKETINVALID(x) (x < 0)