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/wsocket.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/wsocket.c')
-rw-r--r-- | src/wsocket.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/src/wsocket.c b/src/wsocket.c index f9e1084..1ba28b6 100644 --- a/src/wsocket.c +++ b/src/wsocket.c | |||
@@ -86,10 +86,12 @@ int sock_accept(p_sock ps, p_sock pa, SA *addr, socklen_t *addr_len, | |||
86 | SA dummy_addr; | 86 | SA dummy_addr; |
87 | socklen_t dummy_len; | 87 | socklen_t dummy_len; |
88 | fd_set fds; | 88 | fd_set fds; |
89 | if (sock == SOCK_INVALID) return IO_CLOSED; | ||
89 | tv.tv_sec = timeout / 1000; | 90 | tv.tv_sec = timeout / 1000; |
90 | tv.tv_usec = (timeout % 1000) * 1000; | 91 | tv.tv_usec = (timeout % 1000) * 1000; |
91 | FD_ZERO(&fds); | 92 | FD_ZERO(&fds); |
92 | FD_SET(sock, &fds); | 93 | FD_SET(sock, &fds); |
94 | *pa = SOCK_INVALID; | ||
93 | if (select(sock+1, &fds, NULL, NULL, timeout >= 0 ? &tv : NULL) <= 0) | 95 | if (select(sock+1, &fds, NULL, NULL, timeout >= 0 ? &tv : NULL) <= 0) |
94 | return IO_TIMEOUT; | 96 | return IO_TIMEOUT; |
95 | if (!addr) addr = &dummy_addr; | 97 | if (!addr) addr = &dummy_addr; |
@@ -109,6 +111,7 @@ int sock_send(p_sock ps, const char *data, size_t count, size_t *sent, | |||
109 | struct timeval tv; | 111 | struct timeval tv; |
110 | fd_set fds; | 112 | fd_set fds; |
111 | ssize_t put = 0; | 113 | ssize_t put = 0; |
114 | if (sock == SOCK_INVALID) return IO_CLOSED; | ||
112 | int err; | 115 | int err; |
113 | int ret; | 116 | int ret; |
114 | tv.tv_sec = timeout / 1000; | 117 | tv.tv_sec = timeout / 1000; |
@@ -148,6 +151,7 @@ int sock_sendto(p_sock ps, const char *data, size_t count, size_t *sent, | |||
148 | ssize_t put = 0; | 151 | ssize_t put = 0; |
149 | int err; | 152 | int err; |
150 | int ret; | 153 | int ret; |
154 | if (sock == SOCK_INVALID) return IO_CLOSED; | ||
151 | tv.tv_sec = timeout / 1000; | 155 | tv.tv_sec = timeout / 1000; |
152 | tv.tv_usec = (timeout % 1000) * 1000; | 156 | tv.tv_usec = (timeout % 1000) * 1000; |
153 | FD_ZERO(&fds); | 157 | FD_ZERO(&fds); |
@@ -183,6 +187,7 @@ int sock_recv(p_sock ps, char *data, size_t count, size_t *got, int timeout) | |||
183 | fd_set fds; | 187 | fd_set fds; |
184 | int ret; | 188 | int ret; |
185 | ssize_t taken = 0; | 189 | ssize_t taken = 0; |
190 | if (sock == SOCK_INVALID) return IO_CLOSED; | ||
186 | tv.tv_sec = timeout / 1000; | 191 | tv.tv_sec = timeout / 1000; |
187 | tv.tv_usec = (timeout % 1000) * 1000; | 192 | tv.tv_usec = (timeout % 1000) * 1000; |
188 | FD_ZERO(&fds); | 193 | FD_ZERO(&fds); |
@@ -214,6 +219,7 @@ int sock_recvfrom(p_sock ps, char *data, size_t count, size_t *got, | |||
214 | fd_set fds; | 219 | fd_set fds; |
215 | int ret; | 220 | int ret; |
216 | ssize_t taken = 0; | 221 | ssize_t taken = 0; |
222 | if (sock == SOCK_INVALID) return IO_CLOSED; | ||
217 | tv.tv_sec = timeout / 1000; | 223 | tv.tv_sec = timeout / 1000; |
218 | tv.tv_usec = (timeout % 1000) * 1000; | 224 | tv.tv_usec = (timeout % 1000) * 1000; |
219 | FD_ZERO(&fds); | 225 | FD_ZERO(&fds); |