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