aboutsummaryrefslogtreecommitdiff
path: root/src/usocket.c
diff options
context:
space:
mode:
authorDiego Nehab <diego@tecgraf.puc-rio.br>2004-06-20 22:19:54 +0000
committerDiego Nehab <diego@tecgraf.puc-rio.br>2004-06-20 22:19:54 +0000
commitf7579db9e830ef41f422a280d26c9077f48728e5 (patch)
treed96affac7f5e8203d2e9c4a053213a992cd76650 /src/usocket.c
parent5dc5c3ebe8f111bba01762ca0f5edba912c4f0b9 (diff)
downloadluasocket-f7579db9e830ef41f422a280d26c9077f48728e5.tar.gz
luasocket-f7579db9e830ef41f422a280d26c9077f48728e5.tar.bz2
luasocket-f7579db9e830ef41f422a280d26c9077f48728e5.zip
Fixing bugs...
Diffstat (limited to 'src/usocket.c')
-rw-r--r--src/usocket.c11
1 files changed, 8 insertions, 3 deletions
diff --git a/src/usocket.c b/src/usocket.c
index 6b4182b..ea0f172 100644
--- a/src/usocket.c
+++ b/src/usocket.c
@@ -95,7 +95,8 @@ const char *sock_connect(p_sock ps, SA *addr, socklen_t addr_len, p_tm tm)
95 /* don't call on closed socket */ 95 /* don't call on closed socket */
96 if (sock == SOCK_INVALID) return io_strerror(IO_CLOSED); 96 if (sock == SOCK_INVALID) return io_strerror(IO_CLOSED);
97 /* ask system to connect */ 97 /* ask system to connect */
98 err = connect(sock, addr, addr_len); 98 do err = connect(sock, addr, addr_len);
99 while (err < 0 && errno == EINTR);
99 /* if no error, we're done */ 100 /* if no error, we're done */
100 if (err == 0) return NULL; 101 if (err == 0) return NULL;
101 /* make sure the system is trying to connect */ 102 /* make sure the system is trying to connect */
@@ -174,9 +175,13 @@ const char *sock_accept(p_sock ps, p_sock pa, SA *addr,
174 int err; 175 int err;
175 fd_set fds; 176 fd_set fds;
176 /* try to accept */ 177 /* try to accept */
177 *pa = accept(sock, addr, addr_len); 178 do *pa = accept(sock, addr, addr_len);
179 while (*pa < 0 && errno == EINTR);
178 /* if result is valid, we are done */ 180 /* if result is valid, we are done */
179 if (*pa != SOCK_INVALID) return NULL; 181 if (*pa != SOCK_INVALID) {
182 sock_setnonblocking(pa);
183 return NULL;
184 }
180 /* find out if we failed for a fatal reason */ 185 /* find out if we failed for a fatal reason */
181 if (errno != EWOULDBLOCK && errno != ECONNABORTED) 186 if (errno != EWOULDBLOCK && errno != ECONNABORTED)
182 return sock_acceptstrerror(errno); 187 return sock_acceptstrerror(errno);