diff options
Diffstat (limited to 'src/usocket.c')
-rw-r--r-- | src/usocket.c | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/src/usocket.c b/src/usocket.c index e70806a..ef275b4 100644 --- a/src/usocket.c +++ b/src/usocket.c | |||
@@ -206,10 +206,10 @@ int socket_send(p_socket ps, const char *data, size_t count, | |||
206 | size_t *sent, p_timeout tm) | 206 | size_t *sent, p_timeout tm) |
207 | { | 207 | { |
208 | int err; | 208 | int err; |
209 | *sent = 0; | ||
209 | /* avoid making system calls on closed sockets */ | 210 | /* avoid making system calls on closed sockets */ |
210 | if (*ps == SOCKET_INVALID) return IO_CLOSED; | 211 | if (*ps == SOCKET_INVALID) return IO_CLOSED; |
211 | /* loop until we send something or we give up on error */ | 212 | /* loop until we send something or we give up on error */ |
212 | *sent = 0; | ||
213 | for ( ;; ) { | 213 | for ( ;; ) { |
214 | long put = (long) send(*ps, data, count, 0); | 214 | long put = (long) send(*ps, data, count, 0); |
215 | /* if we sent anything, we are done */ | 215 | /* if we sent anything, we are done */ |
@@ -239,8 +239,8 @@ int socket_sendto(p_socket ps, const char *data, size_t count, size_t *sent, | |||
239 | SA *addr, socklen_t len, p_timeout tm) | 239 | SA *addr, socklen_t len, p_timeout tm) |
240 | { | 240 | { |
241 | int err; | 241 | int err; |
242 | if (*ps == SOCKET_INVALID) return IO_CLOSED; | ||
243 | *sent = 0; | 242 | *sent = 0; |
243 | if (*ps == SOCKET_INVALID) return IO_CLOSED; | ||
244 | for ( ;; ) { | 244 | for ( ;; ) { |
245 | long put = (long) sendto(*ps, data, count, 0, addr, len); | 245 | long put = (long) sendto(*ps, data, count, 0, addr, len); |
246 | if (put > 0) { | 246 | if (put > 0) { |
@@ -261,6 +261,7 @@ int socket_sendto(p_socket ps, const char *data, size_t count, size_t *sent, | |||
261 | \*-------------------------------------------------------------------------*/ | 261 | \*-------------------------------------------------------------------------*/ |
262 | int socket_recv(p_socket ps, char *data, size_t count, size_t *got, p_timeout tm) { | 262 | int socket_recv(p_socket ps, char *data, size_t count, size_t *got, p_timeout tm) { |
263 | int err; | 263 | int err; |
264 | *got = 0; | ||
264 | if (*ps == SOCKET_INVALID) return IO_CLOSED; | 265 | if (*ps == SOCKET_INVALID) return IO_CLOSED; |
265 | for ( ;; ) { | 266 | for ( ;; ) { |
266 | long taken = (long) recv(*ps, data, count, 0); | 267 | long taken = (long) recv(*ps, data, count, 0); |
@@ -269,7 +270,6 @@ int socket_recv(p_socket ps, char *data, size_t count, size_t *got, p_timeout tm | |||
269 | return IO_DONE; | 270 | return IO_DONE; |
270 | } | 271 | } |
271 | err = errno; | 272 | err = errno; |
272 | *got = 0; | ||
273 | if (taken == 0) return IO_CLOSED; | 273 | if (taken == 0) return IO_CLOSED; |
274 | if (err == EINTR) continue; | 274 | if (err == EINTR) continue; |
275 | if (err != EAGAIN) return err; | 275 | if (err != EAGAIN) return err; |
@@ -284,6 +284,7 @@ int socket_recv(p_socket ps, char *data, size_t count, size_t *got, p_timeout tm | |||
284 | int socket_recvfrom(p_socket ps, char *data, size_t count, size_t *got, | 284 | int socket_recvfrom(p_socket ps, char *data, size_t count, size_t *got, |
285 | SA *addr, socklen_t *len, p_timeout tm) { | 285 | SA *addr, socklen_t *len, p_timeout tm) { |
286 | int err; | 286 | int err; |
287 | *got = 0; | ||
287 | if (*ps == SOCKET_INVALID) return IO_CLOSED; | 288 | if (*ps == SOCKET_INVALID) return IO_CLOSED; |
288 | for ( ;; ) { | 289 | for ( ;; ) { |
289 | long taken = (long) recvfrom(*ps, data, count, 0, addr, len); | 290 | long taken = (long) recvfrom(*ps, data, count, 0, addr, len); |
@@ -292,7 +293,6 @@ int socket_recvfrom(p_socket ps, char *data, size_t count, size_t *got, | |||
292 | return IO_DONE; | 293 | return IO_DONE; |
293 | } | 294 | } |
294 | err = errno; | 295 | err = errno; |
295 | *got = 0; | ||
296 | if (taken == 0) return IO_CLOSED; | 296 | if (taken == 0) return IO_CLOSED; |
297 | if (err == EINTR) continue; | 297 | if (err == EINTR) continue; |
298 | if (err != EAGAIN) return err; | 298 | if (err != EAGAIN) return err; |