diff options
author | Mojca Miklavec <mojca.miklavec.lists@gmail.com> | 2018-03-21 18:02:46 +0100 |
---|---|---|
committer | Mojca Miklavec <mojca.miklavec.lists@gmail.com> | 2019-02-26 09:30:15 +0100 |
commit | d9afe3fd9ccf64a0686683f5453937c08611aa28 (patch) | |
tree | a5b87fb0745f97dacc632137731e938b53473947 /src | |
parent | c0fba03e4fe2a27a3471fa5af290be931f957002 (diff) | |
download | luasocket-d9afe3fd9ccf64a0686683f5453937c08611aa28.tar.gz luasocket-d9afe3fd9ccf64a0686683f5453937c08611aa28.tar.bz2 luasocket-d9afe3fd9ccf64a0686683f5453937c08611aa28.zip |
Only use EAI_OVERFLOW, AI_NUMERICSERV if defined
Some systems like Mac OS X 10.5 (and lower) do not have EAI_OVERFLOW and
AI_NUMERICSERV defined.
These variables are used to avoid a potentially slow name resolution
for the hostname (which will always be an ip address)
and for service name (which will always be an actual port number).
The code might be slower, but it should still work.
Closes: #242
Diffstat (limited to 'src')
-rw-r--r-- | src/udp.c | 5 | ||||
-rw-r--r-- | src/usocket.c | 2 |
2 files changed, 6 insertions, 1 deletions
@@ -188,7 +188,10 @@ static int meth_sendto(lua_State *L) { | |||
188 | memset(&aihint, 0, sizeof(aihint)); | 188 | memset(&aihint, 0, sizeof(aihint)); |
189 | aihint.ai_family = udp->family; | 189 | aihint.ai_family = udp->family; |
190 | aihint.ai_socktype = SOCK_DGRAM; | 190 | aihint.ai_socktype = SOCK_DGRAM; |
191 | aihint.ai_flags = AI_NUMERICHOST | AI_NUMERICSERV; | 191 | aihint.ai_flags = AI_NUMERICHOST; |
192 | #ifdef AI_NUMERICSERV | ||
193 | aihint.ai_flags |= AI_NUMERICSERV; | ||
194 | #endif | ||
192 | err = getaddrinfo(ip, port, &aihint, &ai); | 195 | err = getaddrinfo(ip, port, &aihint, &ai); |
193 | if (err) { | 196 | if (err) { |
194 | lua_pushnil(L); | 197 | lua_pushnil(L); |
diff --git a/src/usocket.c b/src/usocket.c index 08a961d..aee876d 100644 --- a/src/usocket.c +++ b/src/usocket.c | |||
@@ -440,7 +440,9 @@ LUASOCKET_PRIVATE const char *socket_gaistrerror(int err) { | |||
440 | case EAI_FAMILY: return PIE_FAMILY; | 440 | case EAI_FAMILY: return PIE_FAMILY; |
441 | case EAI_MEMORY: return PIE_MEMORY; | 441 | case EAI_MEMORY: return PIE_MEMORY; |
442 | case EAI_NONAME: return PIE_NONAME; | 442 | case EAI_NONAME: return PIE_NONAME; |
443 | #ifdef EAI_OVERFLOW | ||
443 | case EAI_OVERFLOW: return PIE_OVERFLOW; | 444 | case EAI_OVERFLOW: return PIE_OVERFLOW; |
445 | #endif | ||
444 | #ifdef EAI_PROTOCOL | 446 | #ifdef EAI_PROTOCOL |
445 | case EAI_PROTOCOL: return PIE_PROTOCOL; | 447 | case EAI_PROTOCOL: return PIE_PROTOCOL; |
446 | #endif | 448 | #endif |