diff options
| author | Diego Nehab <diego@tecgraf.puc-rio.br> | 2007-06-11 23:44:54 +0000 |
|---|---|---|
| committer | Diego Nehab <diego@tecgraf.puc-rio.br> | 2007-06-11 23:44:54 +0000 |
| commit | 3cd10f5ab6cda5c4a8db829dd38f25168edcfc4a (patch) | |
| tree | f0c49eb250f5375414025a9e7022261e729ad905 /src/wsocket.c | |
| parent | 3074a8f56b5153f4477e662453102583d7b6f539 (diff) | |
| download | luasocket-3cd10f5ab6cda5c4a8db829dd38f25168edcfc4a.tar.gz luasocket-3cd10f5ab6cda5c4a8db829dd38f25168edcfc4a.tar.bz2 luasocket-3cd10f5ab6cda5c4a8db829dd38f25168edcfc4a.zip | |
Crashy bug fixed in recvraw.
Also fixed returns on closed socket.
Diffstat (limited to 'src/wsocket.c')
| -rw-r--r-- | src/wsocket.c | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/src/wsocket.c b/src/wsocket.c index dce333b..e247777 100644 --- a/src/wsocket.c +++ b/src/wsocket.c | |||
| @@ -201,10 +201,10 @@ int socket_send(p_socket ps, const char *data, size_t count, | |||
| 201 | size_t *sent, p_timeout tm) | 201 | size_t *sent, p_timeout tm) |
| 202 | { | 202 | { |
| 203 | int err; | 203 | int err; |
| 204 | *sent = 0; | ||
| 204 | /* avoid making system calls on closed sockets */ | 205 | /* avoid making system calls on closed sockets */ |
| 205 | if (*ps == SOCKET_INVALID) return IO_CLOSED; | 206 | if (*ps == SOCKET_INVALID) return IO_CLOSED; |
| 206 | /* loop until we send something or we give up on error */ | 207 | /* loop until we send something or we give up on error */ |
| 207 | *sent = 0; | ||
| 208 | for ( ;; ) { | 208 | for ( ;; ) { |
| 209 | /* try to send something */ | 209 | /* try to send something */ |
| 210 | int put = send(*ps, data, (int) count, 0); | 210 | int put = send(*ps, data, (int) count, 0); |
| @@ -231,8 +231,8 @@ int socket_sendto(p_socket ps, const char *data, size_t count, size_t *sent, | |||
| 231 | SA *addr, socklen_t len, p_timeout tm) | 231 | SA *addr, socklen_t len, p_timeout tm) |
| 232 | { | 232 | { |
| 233 | int err; | 233 | int err; |
| 234 | if (*ps == SOCKET_INVALID) return IO_CLOSED; | ||
| 235 | *sent = 0; | 234 | *sent = 0; |
| 235 | if (*ps == SOCKET_INVALID) return IO_CLOSED; | ||
| 236 | for ( ;; ) { | 236 | for ( ;; ) { |
| 237 | int put = sendto(*ps, data, (int) count, 0, addr, len); | 237 | int put = sendto(*ps, data, (int) count, 0, addr, len); |
| 238 | if (put > 0) { | 238 | if (put > 0) { |
| @@ -251,8 +251,8 @@ int socket_sendto(p_socket ps, const char *data, size_t count, size_t *sent, | |||
| 251 | \*-------------------------------------------------------------------------*/ | 251 | \*-------------------------------------------------------------------------*/ |
| 252 | int socket_recv(p_socket ps, char *data, size_t count, size_t *got, p_timeout tm) { | 252 | int socket_recv(p_socket ps, char *data, size_t count, size_t *got, p_timeout tm) { |
| 253 | int err; | 253 | int err; |
| 254 | if (*ps == SOCKET_INVALID) return IO_CLOSED; | ||
| 255 | *got = 0; | 254 | *got = 0; |
| 255 | if (*ps == SOCKET_INVALID) return IO_CLOSED; | ||
| 256 | for ( ;; ) { | 256 | for ( ;; ) { |
| 257 | int taken = recv(*ps, data, (int) count, 0); | 257 | int taken = recv(*ps, data, (int) count, 0); |
| 258 | if (taken > 0) { | 258 | if (taken > 0) { |
| @@ -273,8 +273,8 @@ int socket_recv(p_socket ps, char *data, size_t count, size_t *got, p_timeout tm | |||
| 273 | int socket_recvfrom(p_socket ps, char *data, size_t count, size_t *got, | 273 | int socket_recvfrom(p_socket ps, char *data, size_t count, size_t *got, |
| 274 | SA *addr, socklen_t *len, p_timeout tm) { | 274 | SA *addr, socklen_t *len, p_timeout tm) { |
| 275 | int err; | 275 | int err; |
| 276 | if (*ps == SOCKET_INVALID) return IO_CLOSED; | ||
| 277 | *got = 0; | 276 | *got = 0; |
| 277 | if (*ps == SOCKET_INVALID) return IO_CLOSED; | ||
| 278 | for ( ;; ) { | 278 | for ( ;; ) { |
| 279 | int taken = recvfrom(*ps, data, (int) count, 0, addr, len); | 279 | int taken = recvfrom(*ps, data, (int) count, 0, addr, len); |
| 280 | if (taken > 0) { | 280 | if (taken > 0) { |
