aboutsummaryrefslogtreecommitdiff
path: root/src/usocket.c
diff options
context:
space:
mode:
authorCaleb Maclennan <caleb@alerque.com>2026-08-31 11:00:36 +0300
committerGitHub <noreply@github.com>2026-08-31 11:00:36 +0300
commitb836466de5a78e9b4f29ca6c85a2bdecd7c69da9 (patch)
tree465b3b3a8121b1625b7ee3c9fba2e1f3cdce8a3c /src/usocket.c
parent8f18ce95bb38c7f5c4bef5b3684cf1b0df1fc266 (diff)
parent75d638ac9cc613f39ec4513d3dc2e43a6f909da1 (diff)
downloadluasocket-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.c2
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) {