summaryrefslogtreecommitdiff
path: root/libhw
diff options
context:
space:
mode:
authorLuke T. Shumaker <lukeshu@lukeshu.com>2025-02-21 10:34:00 -0700
committerLuke T. Shumaker <lukeshu@lukeshu.com>2025-02-21 10:34:00 -0700
commit19a41387633e53d64d8a0ae69f3d3d3e35641c8d (patch)
treea89dead6dd34f95b3e644edeb02fe1ca70a28784 /libhw
parent4ba0b95dc825a83748b7cb2aa528411026d5bada (diff)
parent5dab625d981e0039a5d874f5d8a6f795472785bc (diff)
Merge branch 'lukeshu/misc'
Diffstat (limited to 'libhw')
-rw-r--r--libhw/host_net.c6
-rw-r--r--libhw/w5500.c10
2 files changed, 12 insertions, 4 deletions
diff --git a/libhw/host_net.c b/libhw/host_net.c
index 505c7dc..eee293e 100644
--- a/libhw/host_net.c
+++ b/libhw/host_net.c
@@ -229,6 +229,9 @@ static void *hostnet_pthread_read(void *_args) {
static ssize_t hostnet_tcp_read(struct _hostnet_tcp_conn *conn, void *buf, size_t count) {
assert(conn);
+ assert(count == 0 || buf);
+ if (count == 0)
+ return 0;
ssize_t ret;
struct hostnet_pthread_read_args args = {
@@ -287,6 +290,9 @@ static void *hostnet_pthread_write(void *_args) {
static ssize_t hostnet_tcp_write(struct _hostnet_tcp_conn *conn, void *buf, size_t count) {
assert(conn);
+ assert(count == 0 || buf);
+ if (count == 0)
+ return 0;
ssize_t ret;
struct hostnet_pthread_write_args args = {
diff --git a/libhw/w5500.c b/libhw/w5500.c
index dfe169f..a8777db 100644
--- a/libhw/w5500.c
+++ b/libhw/w5500.c
@@ -589,8 +589,9 @@ static int w5500_tcplist_close(struct _w5500_socket *socket) {
static ssize_t w5500_tcp_write(struct _w5500_socket *socket, void *buf, size_t count) {
debugf("tcp_conn.write(%zu)", count);
ASSERT_SELF(stream_conn, TCP);
- assert(buf);
- assert(count);
+ assert(count == 0 || buf);
+ if (count == 0)
+ return 0;
/* What we really want is to pause until we receive an ACK for
* some data we just queued, so that we can line up some new
@@ -677,8 +678,9 @@ static void w5500_tcp_alarm_handler(void *_arg) {
static ssize_t w5500_tcp_read(struct _w5500_socket *socket, void *buf, size_t count) {
debugf("tcp_conn.read()");
ASSERT_SELF(stream_conn, TCP);
- assert(buf);
- assert(count);
+ assert(count == 0 || buf);
+ if (count == 0)
+ return 0;
struct alarmclock_trigger trigger = {0};
if (socket->read_deadline_ns)