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); |
