fix(build): Use gai_strerrorA not gai_strerror on Windows

* Explicitly call gai_strerrorA (for Windows builds), so that the code work correctly in 32bit or 64bit builds.

* Implement GAI_STRERROR macro to deal with Windows vs. Non-Windows compiles for 64-bit.

* make usocket.c consistent with other modules that call macro GAI_STRERROR

* Use different name not just different case for macro wrapping function

Co-authored-by: Caleb Maclennan <caleb@alerque.com>
This commit is contained in:
rpatters1 2022-07-27 01:51:35 -05:00 committed by GitHub
parent d1ad8160cb
commit 5a7e3f0888
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 8 additions and 6 deletions

4
src/inet.c Normal file → Executable file
View File

@ -253,7 +253,7 @@ int inet_meth_getpeername(lua_State *L, p_socket ps, int family)
port, sizeof(port), NI_NUMERICHOST | NI_NUMERICSERV); port, sizeof(port), NI_NUMERICHOST | NI_NUMERICSERV);
if (err) { if (err) {
lua_pushnil(L); lua_pushnil(L);
lua_pushstring(L, gai_strerror(err)); lua_pushstring(L, LUA_GAI_STRERROR(err));
return 2; return 2;
} }
lua_pushstring(L, name); lua_pushstring(L, name);
@ -286,7 +286,7 @@ int inet_meth_getsockname(lua_State *L, p_socket ps, int family)
name, INET6_ADDRSTRLEN, port, 6, NI_NUMERICHOST | NI_NUMERICSERV); name, INET6_ADDRSTRLEN, port, 6, NI_NUMERICHOST | NI_NUMERICSERV);
if (err) { if (err) {
lua_pushnil(L); lua_pushnil(L);
lua_pushstring(L, gai_strerror(err)); lua_pushstring(L, LUA_GAI_STRERROR(err));
return 2; return 2;
} }
lua_pushstring(L, name); lua_pushstring(L, name);

2
src/socket.h Normal file → Executable file
View File

@ -16,8 +16,10 @@
\*=========================================================================*/ \*=========================================================================*/
#ifdef _WIN32 #ifdef _WIN32
#include "wsocket.h" #include "wsocket.h"
#define LUA_GAI_STRERROR gai_strerrorA
#else #else
#include "usocket.h" #include "usocket.h"
#define LUA_GAI_STRERROR gai_strerror
#endif #endif
/*=========================================================================*\ /*=========================================================================*\

4
src/udp.c Normal file → Executable file
View File

@ -191,7 +191,7 @@ static int meth_sendto(lua_State *L) {
err = getaddrinfo(ip, port, &aihint, &ai); err = getaddrinfo(ip, port, &aihint, &ai);
if (err) { if (err) {
lua_pushnil(L); lua_pushnil(L);
lua_pushstring(L, gai_strerror(err)); lua_pushstring(L, LUA_GAI_STRERROR(err));
return 2; return 2;
} }
@ -290,7 +290,7 @@ static int meth_receivefrom(lua_State *L) {
INET6_ADDRSTRLEN, portstr, 6, NI_NUMERICHOST | NI_NUMERICSERV); INET6_ADDRSTRLEN, portstr, 6, NI_NUMERICHOST | NI_NUMERICSERV);
if (err) { if (err) {
lua_pushnil(L); lua_pushnil(L);
lua_pushstring(L, gai_strerror(err)); lua_pushstring(L, LUA_GAI_STRERROR(err));
if (wanted > sizeof(buf)) free(dgram); if (wanted > sizeof(buf)) free(dgram);
return 2; return 2;
} }

View File

@ -449,6 +449,6 @@ const char *socket_gaistrerror(int err) {
case EAI_SERVICE: return PIE_SERVICE; case EAI_SERVICE: return PIE_SERVICE;
case EAI_SOCKTYPE: return PIE_SOCKTYPE; case EAI_SOCKTYPE: return PIE_SOCKTYPE;
case EAI_SYSTEM: return strerror(errno); case EAI_SYSTEM: return strerror(errno);
default: return gai_strerror(err); default: return LUA_GAI_STRERROR(err);
} }
} }

View File

@ -429,6 +429,6 @@ const char *socket_gaistrerror(int err) {
#ifdef EAI_SYSTEM #ifdef EAI_SYSTEM
case EAI_SYSTEM: return strerror(errno); case EAI_SYSTEM: return strerror(errno);
#endif #endif
default: return gai_strerror(err); default: return LUA_GAI_STRERROR(err);
} }
} }