Fixes for windows (#45)

* init Net system on Windows

* propagate DNS error

* Add zlib 1.2.11 sources

* link zlib statically for windows

* remove not implemented function declaration

* fix connect on Windows
This commit is contained in:
Dimon4eg
2019-04-26 02:26:53 +03:00
committed by Benjamin Sergeant
parent b178ba16af
commit 58d65926bb
7 changed files with 56 additions and 5 deletions

View File

@ -27,7 +27,7 @@ namespace ix
_done(false),
_id(_nextId++)
{
initNetSystem();
}
DNSLookup::~DNSLookup()
@ -137,6 +137,11 @@ namespace ix
return nullptr;
}
if (!_errMsg.empty())
{
errMsg = _errMsg;
}
std::unique_lock<std::mutex> rlock(_resMutex);
return _res;
}

View File

@ -0,0 +1,39 @@
/*
* IXNetSystem.cpp
* Author: Benjamin Sergeant
* Copyright (c) 2019 Machine Zone. All rights reserved.
*/
#include "IXNetSystem.h"
namespace ix
{
bool initNetSystem()
{
#ifdef _WIN32
WORD wVersionRequested;
WSADATA wsaData;
int err;
/* Use the MAKEWORD(lowbyte, highbyte) macro declared in Windef.h */
wVersionRequested = MAKEWORD(2, 2);
err = WSAStartup(wVersionRequested, &wsaData);
return err == 0;
#else
return true;
#endif
}
bool uninitNetSystem()
{
#ifdef _WIN32
int err = WSACleanup();
return err == 0;
#else
return true;
#endif
}
}

View File

@ -23,3 +23,9 @@
# include <sys/time.h>
# include <unistd.h>
#endif
namespace ix
{
bool initNetSystem();
bool uninitNetSystem();
}

View File

@ -57,10 +57,10 @@ namespace ix
SocketConnect::configure(fd);
if (::connect(fd, address->ai_addr, address->ai_addrlen) == -1
&& errno != EINPROGRESS)
&& errno != EINPROGRESS && errno != 0)
{
closeSocket(fd);
errMsg = strerror(errno);
closeSocket(fd);
return -1;
}