From 8e9333616ac3dd37dfb2261f08dd0b16018d0686 Mon Sep 17 00:00:00 2001 From: Stefano Brivio Date: Wed, 1 Sep 2021 16:44:20 +0200 Subject: udp: Fix retry mechanism on partial sendmmsg() Signed-off-by: Stefano Brivio --- udp.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/udp.c b/udp.c index e3bb1e6..77da549 100644 --- a/udp.c +++ b/udp.c @@ -645,7 +645,7 @@ void udp_sock_handler(struct ctx *c, union epoll_ref ref, uint32_t events, struct timespec *now) { int iov_in_msg, msg_i = 0, ret; - ssize_t n, msglen, missing; + ssize_t n, msglen, missing = 0; struct mmsghdr *tap_mmh; struct msghdr *cur_mh; unsigned int i; @@ -829,7 +829,7 @@ void udp_sock_handler(struct ctx *c, union epoll_ref ref, uint32_t events, * * In pictures, given this example: * - * iov #0 iov #2 iov #3 iov #4 + * iov #0 iov #1 iov #2 iov #3 * tap_mmh[ret - 1].msg_hdr: .... ...... ..... ...... * tap_mmh[ret - 1].msg_len: 7 .... ... * @@ -845,7 +845,7 @@ void udp_sock_handler(struct ctx *c, union epoll_ref ref, uint32_t events, missing = msglen - tap_mmh[ret - 1].msg_len; } - if (missing) { + if (missing > 0) { uint8_t **iov_base; int first_offset; -- cgit v1.2.3