From bcce73b296e6b8e439dd480f50518f6c08ad6910 Mon Sep 17 00:00:00 2001 From: "Jason A. Donenfeld" Date: Fri, 8 Jul 2016 20:45:25 +0200 Subject: timers: do not consider keepalives to be data sent Signed-off-by: Jason A. Donenfeld --- src/send.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/send.c b/src/send.c index f43e4a3..1f63fd9 100644 --- a/src/send.c +++ b/src/send.c @@ -127,11 +127,13 @@ struct packet_bundle { static inline void send_off_bundle(struct packet_bundle *bundle, struct wireguard_peer *peer) { struct sk_buff *skb, *next; + bool is_keepalive; for (skb = bundle->first; skb; skb = next) { /* We store the next pointer locally because socket_send_skb_to_peer * consumes the packet before the top of the loop comes again. */ next = skb->next; - if (likely(!socket_send_skb_to_peer(peer, skb, 0 /* TODO: Should we copy the DSCP value from the enclosed packet? */))) + is_keepalive = skb->len == message_data_len(0); + if (likely(!socket_send_skb_to_peer(peer, skb, 0 /* TODO: Should we copy the DSCP value from the enclosed packet? */) && !is_keepalive)) timers_data_sent(peer); } } -- cgit v1.2.3