X-Git-Url: https://tinc-vpn.org/git/browse?p=tinc;a=blobdiff_plain;f=src%2Fnet_packet.c;h=f6c19b7ac890855132d9b16154fc5d89bd176e9c;hp=e7161445c937cde6be5e8fd57ba6daae3e84f29c;hb=cda5a477c8138226d184a176256d559971b4f7ed;hpb=e4fd81ed2d66b8fe3c2857244fe3da85c803cf60 diff --git a/src/net_packet.c b/src/net_packet.c index e7161445..f6c19b7a 100644 --- a/src/net_packet.c +++ b/src/net_packet.c @@ -1504,12 +1504,13 @@ void handle_incoming_vpn_data(void *data, int flags) { #ifdef HAVE_RECVMMSG #define MAX_MSG 64 - vpn_packet_t pkt[MAX_MSG]; - sockaddr_t addr[MAX_MSG]; - struct mmsghdr msg[MAX_MSG]; - struct iovec iov[MAX_MSG]; + static int num = MAX_MSG; + static vpn_packet_t pkt[MAX_MSG]; + static sockaddr_t addr[MAX_MSG]; + static struct mmsghdr msg[MAX_MSG]; + static struct iovec iov[MAX_MSG]; - for(int i = 0; i < MAX_MSG; i++) { + for(int i = 0; i < num; i++) { pkt[i].offset = 0; iov[i] = (struct iovec){ @@ -1525,7 +1526,7 @@ void handle_incoming_vpn_data(void *data, int flags) { }; } - int num = recvmmsg(ls->udp.fd, msg, MAX_MSG, MSG_DONTWAIT, NULL); + num = recvmmsg(ls->udp.fd, msg, MAX_MSG, MSG_DONTWAIT, NULL); if(num < 0) { if(!sockwouldblock(sockerrno))