]> git.ipfire.org Git - thirdparty/dhcpcd.git/commitdiff
Remove the address from the eloop tiemout queue before freeing.
authorRoy Marples <roy@marples.name>
Fri, 27 Feb 2015 19:53:03 +0000 (19:53 +0000)
committerRoy Marples <roy@marples.name>
Fri, 27 Feb 2015 19:53:03 +0000 (19:53 +0000)
ipv6.c

diff --git a/ipv6.c b/ipv6.c
index 9064d97eb4c99a9af02c52ca6474468473222551..ed18626b9200ac16a5b0d2e1751a8fef7db0eb82 100644 (file)
--- a/ipv6.c
+++ b/ipv6.c
@@ -620,6 +620,8 @@ ipv6_deleteaddr(struct ipv6_addr *addr)
        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 @@ ipv6_handleifa(struct dhcpcd_ctx *ctx,
                case RTM_DELADDR:
                        if (ap) {
                                TAILQ_REMOVE(&state->addrs, ap, next);
+                               eloop_q_timeout_delete(ctx->eloop, 0, NULL, ap);
                                free(ap);
                        }
                        break;