summaryrefslogtreecommitdiffstatshomepage
path: root/src/timers.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/timers.c')
-rw-r--r--src/timers.c14
1 files changed, 8 insertions, 6 deletions
diff --git a/src/timers.c b/src/timers.c
index 0e14098..bd22bf6 100644
--- a/src/timers.c
+++ b/src/timers.c
@@ -114,9 +114,6 @@ static void expired_send_persistent_keepalive(struct timer_list *timer)
/* Should be called after an authenticated data packet is sent. */
void timers_data_sent(struct wireguard_peer *peer)
{
- if (likely(timers_active(peer)))
- del_timer(&peer->timer_send_keepalive);
-
if (likely(timers_active(peer)) && !timer_pending(&peer->timer_new_handshake))
mod_timer(&peer->timer_new_handshake, jiffies + KEEPALIVE_TIMEOUT + REKEY_TIMEOUT);
}
@@ -132,6 +129,13 @@ void timers_data_received(struct wireguard_peer *peer)
}
}
+/* Should be called after any type of authenticated packet is sent -- keepalive, data, or handshake. */
+void timers_any_authenticated_packet_sent(struct wireguard_peer *peer)
+{
+ if (likely(timers_active(peer)))
+ del_timer(&peer->timer_send_keepalive);
+}
+
/* Should be called after any type of authenticated packet is received -- keepalive, data, or handshake. */
void timers_any_authenticated_packet_received(struct wireguard_peer *peer)
{
@@ -142,10 +146,8 @@ void timers_any_authenticated_packet_received(struct wireguard_peer *peer)
/* Should be called after a handshake initiation message is sent. */
void timers_handshake_initiated(struct wireguard_peer *peer)
{
- if (likely(timers_active(peer))) {
- del_timer(&peer->timer_send_keepalive);
+ if (likely(timers_active(peer)))
mod_timer(&peer->timer_retransmit_handshake, jiffies + REKEY_TIMEOUT + prandom_u32_max(REKEY_TIMEOUT_JITTER_MAX));
- }
}
/* Should be called after a handshake response message is received and processed or when getting key confirmation via the first data message. */