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 ...
} 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);
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));