diff options
author | Matthias Schiffer <mschiffer@universe-factory.net> | 2013-08-28 14:46:03 +0200 |
---|---|---|
committer | Matthias Schiffer <mschiffer@universe-factory.net> | 2013-08-28 15:45:35 +0200 |
commit | 1b9709bae3718efc397fc824fb8a0ec5fac31bd1 (patch) | |
tree | 98702daa2fc021215571ba1e7ab49a6ec4aac82d | |
parent | 3a3d42392020c0115a8e8c5555cff981fa5f3dc3 (diff) | |
download | fastd-1b9709bae3718efc397fc824fb8a0ec5fac31bd1.tar fastd-1b9709bae3718efc397fc824fb8a0ec5fac31bd1.zip |
ec25519: reset peers as soon as their current session times out
-rw-r--r-- | src/protocol_ec25519_fhmqvc.c | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/src/protocol_ec25519_fhmqvc.c b/src/protocol_ec25519_fhmqvc.c index fb556f2..a420e8d 100644 --- a/src/protocol_ec25519_fhmqvc.c +++ b/src/protocol_ec25519_fhmqvc.c @@ -755,8 +755,17 @@ static void protocol_handshake_handle(fastd_context_t *ctx, fastd_socket_t *sock } } +static inline bool check_session(fastd_context_t *ctx, fastd_peer_t *peer) { + if (is_session_valid(ctx, &peer->protocol_state->session)) + return true; + + pr_verbose(ctx, "active session with %P timed out", peer); + fastd_peer_reset(ctx, peer); + return false; +} + static void protocol_handle_recv(fastd_context_t *ctx, fastd_peer_t *peer, fastd_buffer_t buffer) { - if (!peer->protocol_state || !is_session_valid(ctx, &peer->protocol_state->session)) + if (!peer->protocol_state || !check_session(ctx, peer)) goto fail; fastd_buffer_t recv_buffer; @@ -822,7 +831,7 @@ static void session_send(fastd_context_t *ctx, fastd_peer_t *peer, fastd_buffer_ } static void protocol_send(fastd_context_t *ctx, fastd_peer_t *peer, fastd_buffer_t buffer) { - if (!peer->protocol_state || !fastd_peer_is_established(peer) || !is_session_valid(ctx, &peer->protocol_state->session)) { + if (!peer->protocol_state || !fastd_peer_is_established(peer) || !check_session(ctx, peer)) { fastd_buffer_free(buffer); return; } |