diff options
| author | Caleb Maclennan <caleb@alerque.com> | 2026-08-31 11:00:36 +0300 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2026-08-31 11:00:36 +0300 |
| commit | b836466de5a78e9b4f29ca6c85a2bdecd7c69da9 (patch) | |
| tree | 465b3b3a8121b1625b7ee3c9fba2e1f3cdce8a3c /src/usocket.c | |
| parent | 8f18ce95bb38c7f5c4bef5b3684cf1b0df1fc266 (diff) | |
| parent | 75d638ac9cc613f39ec4513d3dc2e43a6f909da1 (diff) | |
| download | luasocket-b836466de5a78e9b4f29ca6c85a2bdecd7c69da9.tar.gz luasocket-b836466de5a78e9b4f29ca6c85a2bdecd7c69da9.tar.bz2 luasocket-b836466de5a78e9b4f29ca6c85a2bdecd7c69da9.zip | |
Merge pull request #471 from lunarmodules/fix/zero-read
fix(receive): a receive 0 should immediately return, not block
Diffstat (limited to 'src/usocket.c')
| -rw-r--r-- | src/usocket.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/src/usocket.c b/src/usocket.c index 7965db6..e00c43d 100644 --- a/src/usocket.c +++ b/src/usocket.c | |||
| @@ -258,6 +258,7 @@ int socket_recv(p_socket ps, char *data, size_t count, size_t *got, p_timeout tm | |||
| 258 | int err; | 258 | int err; |
| 259 | *got = 0; | 259 | *got = 0; |
| 260 | if (*ps == SOCKET_INVALID) return IO_CLOSED; | 260 | if (*ps == SOCKET_INVALID) return IO_CLOSED; |
| 261 | if (count == 0) return IO_DONE; | ||
| 261 | for ( ;; ) { | 262 | for ( ;; ) { |
| 262 | long taken = (long) recv(*ps, data, count, 0); | 263 | long taken = (long) recv(*ps, data, count, 0); |
| 263 | if (taken > 0) { | 264 | if (taken > 0) { |
| @@ -343,6 +344,7 @@ int socket_read(p_socket ps, char *data, size_t count, size_t *got, p_timeout tm | |||
| 343 | int err; | 344 | int err; |
| 344 | *got = 0; | 345 | *got = 0; |
| 345 | if (*ps == SOCKET_INVALID) return IO_CLOSED; | 346 | if (*ps == SOCKET_INVALID) return IO_CLOSED; |
| 347 | if (count == 0) return IO_DONE; | ||
| 346 | for ( ;; ) { | 348 | for ( ;; ) { |
| 347 | long taken = (long) read(*ps, data, count); | 349 | long taken = (long) read(*ps, data, count); |
| 348 | if (taken > 0) { | 350 | if (taken > 0) { |
