From 51aa24d4a2825a050a6c048d69c24a10d98d4993 Mon Sep 17 00:00:00 2001 From: Matthias Schiffer Date: Sun, 4 Nov 2012 17:06:35 +0100 Subject: Reset dynamic peer if there is an established session and resolve fails Fixes an assertion fail when address resolution fails during session refresh. --- src/peer.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/peer.c b/src/peer.c index cb7626f..47e863e 100644 --- a/src/peer.c +++ b/src/peer.c @@ -319,7 +319,11 @@ bool fastd_peer_address_equal(const fastd_peer_address *addr1, const fastd_peer_ } bool fastd_peer_claim_address(fastd_context *ctx, fastd_peer *new_peer, fastd_socket *sock, const fastd_peer_address *addr) { - if (addr->sa.sa_family != AF_UNSPEC) { + if (addr->sa.sa_family == AF_UNSPEC) { + if (fastd_peer_is_established(new_peer)) + fastd_peer_reset(ctx, new_peer); + } + else { fastd_peer *peer; for (peer = ctx->peers; peer; peer = peer->next) { if (fastd_peer_address_equal(&peer->address, addr)) { -- cgit v1.2.3