From 223066fe2495b85e958d992108f59047c0cc4928 Mon Sep 17 00:00:00 2001 From: Matthias Schiffer Date: Sat, 14 Jun 2014 13:59:50 +0200 Subject: Ensure that peers get their place in the handshake queue even when the async queue is full When the first resolve return for a newly reset peer is lost, init_handshake() would never be called, and the peer would never get handshakes again. This probably won't ever happen in practice, but since it's easy to fix, better be correct here. --- src/peer.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/peer.c b/src/peer.c index 5de7831..fc675a9 100644 --- a/src/peer.c +++ b/src/peer.c @@ -399,6 +399,7 @@ static void setup_peer(fastd_peer_t *peer) { if (fastd_remote_is_dynamic(next_remote)) { peer->state = STATE_RESOLVING; fastd_resolve_peer(peer, next_remote); + fastd_peer_schedule_handshake_default(peer); } else { init_handshake(peer); @@ -818,6 +819,8 @@ void fastd_peer_handle_handshake_queue(void) { if (fastd_peer_is_established(peer)) return; + peer->state = STATE_HANDSHAKE; + if (++next_remote->current_address < next_remote->n_addresses) return; -- cgit v1.2.3