udp: Fix retry mechanism on partial sendmmsg()

Signed-off-by: Stefano Brivio <sbrivio@redhat.com>
This commit is contained in:
Stefano Brivio 2021-09-01 16:44:20 +02:00
parent 04d62bb013
commit 8e9333616a

6
udp.c
View file

@ -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;