summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/network/core/os_abstraction.h19
-rw-r--r--src/network/core/tcp_content.h2
2 files changed, 20 insertions, 1 deletions
diff --git a/src/network/core/os_abstraction.h b/src/network/core/os_abstraction.h
index 8d5723639..c54189e9e 100644
--- a/src/network/core/os_abstraction.h
+++ b/src/network/core/os_abstraction.h
@@ -23,6 +23,25 @@
/* Windows has some different names for some types */
typedef SSIZE_T ssize_t;
typedef int socklen_t;
+#else
+#include "../../win32.h"
+
+static inline int OTTDgetnameinfo(const struct sockaddr *sa, socklen_t salen, char *host, DWORD hostlen, char *serv, DWORD servlen, int flags)
+{
+ static int (WINAPI *getnameinfo)(const struct sockaddr *, socklen_t, char *, DWORD, char *, DWORD, int) = NULL;
+ static bool first_time = true;
+
+ if (first_time) {
+ LoadLibraryList((Function*)&getnameinfo, "ws2_32.dll\0getnameinfo\0\0");
+ first_time = false;
+ }
+
+ if (getnameinfo != NULL) return getnameinfo(sa, salen, host, hostlen, serv, servlen, flags);
+
+ strncpy(host, inet_ntoa(((struct sockaddr_in *)sa)->sin_addr), hostlen);
+ return 0;
+}
+#define getnameinfo OTTDgetnameinfo
#endif
#define GET_LAST_ERROR() WSAGetLastError()
diff --git a/src/network/core/tcp_content.h b/src/network/core/tcp_content.h
index 8313c733b..50365c109 100644
--- a/src/network/core/tcp_content.h
+++ b/src/network/core/tcp_content.h
@@ -101,7 +101,7 @@ struct ContentInfo {
/** Base socket handler for all Content TCP sockets */
class NetworkContentSocketHandler : public NetworkTCPSocketHandler {
protected:
- struct NetworkAddress client_addr; ///< The address we're connected to.
+ NetworkAddress client_addr; ///< The address we're connected to.
virtual void Close();
/**