diff options
| -rw-r--r-- | drivers/unix/net_socket_posix.cpp | 19 | ||||
| -rw-r--r-- | drivers/unix/net_socket_posix.h | 1 | ||||
| -rw-r--r-- | drivers/unix/os_unix.cpp | 2 | ||||
| -rw-r--r-- | platform/uwp/os_uwp.cpp | 2 | ||||
| -rw-r--r-- | platform/windows/os_windows.cpp | 1 | 
5 files changed, 24 insertions, 1 deletions
diff --git a/drivers/unix/net_socket_posix.cpp b/drivers/unix/net_socket_posix.cpp index ea19b6a700..9dcc6038ab 100644 --- a/drivers/unix/net_socket_posix.cpp +++ b/drivers/unix/net_socket_posix.cpp @@ -150,9 +150,24 @@ NetSocket *NetSocketPosix::_create_func() {  }  void NetSocketPosix::make_default() { +#if defined(WINDOWS_ENABLED) +	if (_create == NULL) { +		WSADATA data; +		WSAStartup(MAKEWORD(2, 2), &data); +	} +#endif  	_create = _create_func;  } +void NetSocketPosix::cleanup() { +#if defined(WINDOWS_ENABLED) +	if (_create != NULL) { +		WSACleanup(); +	} +	_create = NULL; +#endif +} +  NetSocketPosix::NetSocketPosix() {  	_sock = SOCK_EMPTY;  	_ip_type = IP::TYPE_NONE; @@ -169,10 +184,11 @@ NetSocketPosix::NetError NetSocketPosix::_get_socket_error() {  	if (err == WSAEISCONN)  		return ERR_NET_IS_CONNECTED; -	if (err == WSAEINPROGRESS || errno == WSAEALREADY) +	if (err == WSAEINPROGRESS || err == WSAEALREADY)  		return ERR_NET_IN_PROGRESS;  	if (err == WSAEWOULDBLOCK)  		return ERR_NET_WOULD_BLOCK; +	ERR_PRINTS("Socket error: " + itos(err));  	return ERR_NET_OTHER;  #else  	if (errno == EISCONN) @@ -181,6 +197,7 @@ NetSocketPosix::NetError NetSocketPosix::_get_socket_error() {  		return ERR_NET_IN_PROGRESS;  	if (errno == EAGAIN || errno == EWOULDBLOCK)  		return ERR_NET_WOULD_BLOCK; +	ERR_PRINTS("Socket error: " + itos(errno));  	return ERR_NET_OTHER;  #endif  } diff --git a/drivers/unix/net_socket_posix.h b/drivers/unix/net_socket_posix.h index ee178136f3..8177e01987 100644 --- a/drivers/unix/net_socket_posix.h +++ b/drivers/unix/net_socket_posix.h @@ -67,6 +67,7 @@ protected:  public:  	static void make_default(); +	static void cleanup();  	virtual Error open(Type p_sock_type, IP::Type &ip_type);  	virtual void close(); diff --git a/drivers/unix/os_unix.cpp b/drivers/unix/os_unix.cpp index 1225d00aad..9936c95cf9 100644 --- a/drivers/unix/os_unix.cpp +++ b/drivers/unix/os_unix.cpp @@ -139,6 +139,8 @@ void OS_Unix::initialize_core() {  }  void OS_Unix::finalize_core() { + +	NetSocketPosix::cleanup();  }  void OS_Unix::alert(const String &p_alert, const String &p_title) { diff --git a/platform/uwp/os_uwp.cpp b/platform/uwp/os_uwp.cpp index 5b5f30244e..f489c0894f 100644 --- a/platform/uwp/os_uwp.cpp +++ b/platform/uwp/os_uwp.cpp @@ -406,6 +406,8 @@ void OSUWP::finalize() {  }  void OSUWP::finalize_core() { + +	NetSocketPosix::cleanup();  }  void OSUWP::alert(const String &p_alert, const String &p_title) { diff --git a/platform/windows/os_windows.cpp b/platform/windows/os_windows.cpp index 6723210432..67fc1c7496 100644 --- a/platform/windows/os_windows.cpp +++ b/platform/windows/os_windows.cpp @@ -1512,6 +1512,7 @@ void OS_Windows::finalize_core() {  	timeEndPeriod(1);  	memdelete(process_map); +	NetSocketPosix::cleanup();  }  void OS_Windows::alert(const String &p_alert, const String &p_title) {  |