aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMojca Miklavec <mojca.miklavec.lists@gmail.com>2018-03-21 18:02:46 +0100
committerMojca Miklavec <mojca.miklavec.lists@gmail.com>2019-02-26 09:30:15 +0100
commitd9afe3fd9ccf64a0686683f5453937c08611aa28 (patch)
treea5b87fb0745f97dacc632137731e938b53473947 /src
parentc0fba03e4fe2a27a3471fa5af290be931f957002 (diff)
downloadluasocket-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.c5
-rw-r--r--src/usocket.c2
2 files changed, 6 insertions, 1 deletions
diff --git a/src/udp.c b/src/udp.c
index 99a766f..e59fa1b 100644
--- a/src/udp.c
+++ b/src/udp.c
@@ -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