diff options
author | Diego Nehab <diego@tecgraf.puc-rio.br> | 2003-11-27 00:30:54 +0000 |
---|---|---|
committer | Diego Nehab <diego@tecgraf.puc-rio.br> | 2003-11-27 00:30:54 +0000 |
commit | 3febb302ad28fd25de51cbc686739469b92d8921 (patch) | |
tree | 0a8d9a1070a7c1f2566c22562693fb27963037d9 /src/usocket.c | |
parent | 9bc4e0648ab4a177293a94425594bdc54c9a84fa (diff) | |
download | luasocket-3febb302ad28fd25de51cbc686739469b92d8921.tar.gz luasocket-3febb302ad28fd25de51cbc686739469b92d8921.tar.bz2 luasocket-3febb302ad28fd25de51cbc686739469b92d8921.zip |
Killed a few bugs found by Tomas.
Diffstat (limited to 'src/usocket.c')
-rw-r--r-- | src/usocket.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/src/usocket.c b/src/usocket.c index 202238b..b120d7b 100644 --- a/src/usocket.c +++ b/src/usocket.c | |||
@@ -83,10 +83,12 @@ int sock_accept(p_sock ps, p_sock pa, SA *addr, socklen_t *addr_len, | |||
83 | SA dummy_addr; | 83 | SA dummy_addr; |
84 | socklen_t dummy_len; | 84 | socklen_t dummy_len; |
85 | fd_set fds; | 85 | fd_set fds; |
86 | if (sock == SOCK_INVALID) return IO_CLOSED; | ||
86 | tv.tv_sec = timeout / 1000; | 87 | tv.tv_sec = timeout / 1000; |
87 | tv.tv_usec = (timeout % 1000) * 1000; | 88 | tv.tv_usec = (timeout % 1000) * 1000; |
88 | FD_ZERO(&fds); | 89 | FD_ZERO(&fds); |
89 | FD_SET(sock, &fds); | 90 | FD_SET(sock, &fds); |
91 | *pa = SOCK_INVALID; | ||
90 | if (select(sock+1, &fds, NULL, NULL, timeout >= 0 ? &tv : NULL) <= 0) | 92 | if (select(sock+1, &fds, NULL, NULL, timeout >= 0 ? &tv : NULL) <= 0) |
91 | return IO_TIMEOUT; | 93 | return IO_TIMEOUT; |
92 | if (!addr) addr = &dummy_addr; | 94 | if (!addr) addr = &dummy_addr; |
@@ -108,6 +110,7 @@ int sock_send(p_sock ps, const char *data, size_t count, size_t *sent, | |||
108 | ssize_t put = 0; | 110 | ssize_t put = 0; |
109 | int err; | 111 | int err; |
110 | int ret; | 112 | int ret; |
113 | if (sock == SOCK_INVALID) return IO_CLOSED; | ||
111 | tv.tv_sec = timeout / 1000; | 114 | tv.tv_sec = timeout / 1000; |
112 | tv.tv_usec = (timeout % 1000) * 1000; | 115 | tv.tv_usec = (timeout % 1000) * 1000; |
113 | FD_ZERO(&fds); | 116 | FD_ZERO(&fds); |
@@ -145,6 +148,7 @@ int sock_sendto(p_sock ps, const char *data, size_t count, size_t *sent, | |||
145 | ssize_t put = 0; | 148 | ssize_t put = 0; |
146 | int err; | 149 | int err; |
147 | int ret; | 150 | int ret; |
151 | if (sock == SOCK_INVALID) return IO_CLOSED; | ||
148 | tv.tv_sec = timeout / 1000; | 152 | tv.tv_sec = timeout / 1000; |
149 | tv.tv_usec = (timeout % 1000) * 1000; | 153 | tv.tv_usec = (timeout % 1000) * 1000; |
150 | FD_ZERO(&fds); | 154 | FD_ZERO(&fds); |
@@ -180,6 +184,7 @@ int sock_recv(p_sock ps, char *data, size_t count, size_t *got, int timeout) | |||
180 | fd_set fds; | 184 | fd_set fds; |
181 | int ret; | 185 | int ret; |
182 | ssize_t taken = 0; | 186 | ssize_t taken = 0; |
187 | if (sock == SOCK_INVALID) return IO_CLOSED; | ||
183 | tv.tv_sec = timeout / 1000; | 188 | tv.tv_sec = timeout / 1000; |
184 | tv.tv_usec = (timeout % 1000) * 1000; | 189 | tv.tv_usec = (timeout % 1000) * 1000; |
185 | FD_ZERO(&fds); | 190 | FD_ZERO(&fds); |
@@ -210,6 +215,7 @@ int sock_recvfrom(p_sock ps, char *data, size_t count, size_t *got, | |||
210 | struct timeval tv; | 215 | struct timeval tv; |
211 | fd_set fds; | 216 | fd_set fds; |
212 | int ret; | 217 | int ret; |
218 | if (sock == SOCK_INVALID) return IO_CLOSED; | ||
213 | ssize_t taken = 0; | 219 | ssize_t taken = 0; |
214 | tv.tv_sec = timeout / 1000; | 220 | tv.tv_sec = timeout / 1000; |
215 | tv.tv_usec = (timeout % 1000) * 1000; | 221 | tv.tv_usec = (timeout % 1000) * 1000; |