From: Vladimír Čunát Date: Wed, 25 Sep 2024 08:39:43 +0000 (+0200) Subject: daemon/session2: avoid incorrectly generated errors X-Git-Tag: v6.0.9~11^2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=refs%2Fenvironments%2Fdocs-develop-uv-t-p5pt2q%2Fdeployments%2F5212;p=thirdparty%2Fknot-resolver.git daemon/session2: avoid incorrectly generated errors The _try_ functions additionally return positive values on success, and the code around didn't deal with that. So far there's no evidence that this caused any issues beyond debug-logs: [prlayr] ... iteration of group ... ended with status 'Unknown error ... --- diff --git a/daemon/session2.c b/daemon/session2.c index 0be121fae..91aeb8295 100644 --- a/daemon/session2.c +++ b/daemon/session2.c @@ -1449,6 +1449,8 @@ static int session2_transport_pushv(struct session2 *s, } else { int ret = uv_udp_try_send((uv_udp_t*)handle, (uv_buf_t *)iov, iovcnt, comm->comm_addr); + if (ret > 0) // equals buffer size, only confuses us + ret = 0; if (ret == UV_EAGAIN) { ret = kr_error(ENOBUFS); session2_event(s, PROTOLAYER_EVENT_OS_BUFFER_FULL, NULL); @@ -1480,6 +1482,8 @@ static int session2_transport_pushv(struct session2 *s, ret = kr_error(ENOBUFS); session2_event(s, PROTOLAYER_EVENT_OS_BUFFER_FULL, NULL); } + else if (ret > 0) // iovec_sum was checked, let's not get confused anymore + ret = 0; if (false && ret == UV_EAGAIN) { uv_write_t *req = malloc(sizeof(*req));