changeset 2965:dc9f43c964a3 draft

Remove the address from the eloop tiemout queue before freeing.
author Roy Marples <roy@marples.name>
date Fri, 27 Feb 2015 19:53:03 +0000
parents 80eb30f91444
children 3166c9323fc3
files ipv6.c
diffstat 1 files changed, 3 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/ipv6.c	Fri Feb 27 19:52:00 2015 +0000
+++ b/ipv6.c	Fri Feb 27 19:53:03 2015 +0000
@@ -620,6 +620,8 @@
 	TAILQ_FOREACH(ap, &state->addrs, next) {
 		if (IN6_ARE_ADDR_EQUAL(&ap->addr, &addr->addr)) {
 			TAILQ_REMOVE(&state->addrs, ap, next);
+			eloop_q_timeout_delete(addr->iface->ctx->eloop, 0,
+			    NULL, ap);
 			free(ap);
 			break;
 		}
@@ -936,6 +938,7 @@
 		case RTM_DELADDR:
 			if (ap) {
 				TAILQ_REMOVE(&state->addrs, ap, next);
+				eloop_q_timeout_delete(ctx->eloop, 0, NULL, ap);
 				free(ap);
 			}
 			break;