aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/inet.c24
-rw-r--r--src/tcp.c1
2 files changed, 21 insertions, 4 deletions
diff --git a/src/inet.c b/src/inet.c
index 51e8cfe..eab325e 100644
--- a/src/inet.c
+++ b/src/inet.c
@@ -176,9 +176,24 @@ static int inet_global_getaddrinfo(lua_State *L)
176 } 176 }
177 lua_newtable(L); 177 lua_newtable(L);
178 for (iterator = resolved; iterator; iterator = iterator->ai_next) { 178 for (iterator = resolved; iterator; iterator = iterator->ai_next) {
179 char hbuf[NI_MAXHOST], sbuf[NI_MAXSERV]; 179 char hbuf[NI_MAXHOST]
180 getnameinfo(iterator->ai_addr, (socklen_t) iterator->ai_addrlen, hbuf, 180#ifndef _WINDOWS
181 (socklen_t) sizeof(hbuf), sbuf, 0, NI_NUMERICHOST); 181 ,sbuf[NI_MAXSERV]
182#endif
183 ;
184 ret = getnameinfo(iterator->ai_addr, (socklen_t) iterator->ai_addrlen, hbuf,
185 (socklen_t) sizeof(hbuf),
186#ifdef _WINDOWS
187 NULL, 0,
188#else
189 sbuf, 0,
190#endif
191 NI_NUMERICHOST);
192 if(ret){
193 lua_pushnil(L);
194 lua_pushstring(L, socket_gaistrerror(ret));
195 return 2;
196 }
182 lua_pushnumber(L, i); 197 lua_pushnumber(L, i);
183 lua_newtable(L); 198 lua_newtable(L);
184 switch (iterator->ai_family) { 199 switch (iterator->ai_family) {
@@ -463,6 +478,9 @@ const char *inet_trybind(p_socket ps, const char *address, const char *serv,
463 struct addrinfo *iterator = NULL, *resolved = NULL; 478 struct addrinfo *iterator = NULL, *resolved = NULL;
464 const char *err = NULL; 479 const char *err = NULL;
465 t_socket sock = *ps; 480 t_socket sock = *ps;
481 /* translate luasocket special values to C */
482 if (strcmp(address, "*") == 0) address = NULL;
483 if (!serv) serv = "0";
466 /* try resolving */ 484 /* try resolving */
467 err = socket_gaistrerror(getaddrinfo(address, serv, bindhints, &resolved)); 485 err = socket_gaistrerror(getaddrinfo(address, serv, bindhints, &resolved));
468 if (err) { 486 if (err) {
diff --git a/src/tcp.c b/src/tcp.c
index ca8eec2..60c1e8a 100644
--- a/src/tcp.c
+++ b/src/tcp.c
@@ -222,7 +222,6 @@ static int meth_bind(lua_State *L)
222 bindhints.ai_socktype = SOCK_STREAM; 222 bindhints.ai_socktype = SOCK_STREAM;
223 bindhints.ai_family = tcp->family; 223 bindhints.ai_family = tcp->family;
224 bindhints.ai_flags = AI_PASSIVE; 224 bindhints.ai_flags = AI_PASSIVE;
225 address = strcmp(address, "*")? address: NULL;
226 err = inet_trybind(&tcp->sock, address, port, &bindhints); 225 err = inet_trybind(&tcp->sock, address, port, &bindhints);
227 if (err) { 226 if (err) {
228 lua_pushnil(L); 227 lua_pushnil(L);