mirror of
https://github.com/pi-hole/dnsmasq.git
synced 2025-12-20 02:38:32 +00:00
Suppress re-entrant calls to dhcp_construct_contexts()
This commit is contained in:
10
src/dhcp6.c
10
src/dhcp6.c
@@ -708,12 +708,20 @@ static int construct_worker(struct in6_addr *local, int prefix,
|
|||||||
|
|
||||||
void dhcp_construct_contexts(time_t now)
|
void dhcp_construct_contexts(time_t now)
|
||||||
{
|
{
|
||||||
|
static int active = 0;
|
||||||
struct dhcp_context *context, *tmp, **up;
|
struct dhcp_context *context, *tmp, **up;
|
||||||
struct cparam param;
|
struct cparam param;
|
||||||
param.newone = 0;
|
param.newone = 0;
|
||||||
param.newname = 0;
|
param.newname = 0;
|
||||||
param.now = now;
|
param.now = now;
|
||||||
|
|
||||||
|
/* Various calls that we make may end up calling iface_enumerate(), which can then
|
||||||
|
call us again, We're NOT re-entrant, so ignore a second invokation. */
|
||||||
|
if (active)
|
||||||
|
return;
|
||||||
|
|
||||||
|
active = 1;
|
||||||
|
|
||||||
for (context = daemon->dhcp6; context; context = context->next)
|
for (context = daemon->dhcp6; context; context = context->next)
|
||||||
if (context->flags & CONTEXT_CONSTRUCTED)
|
if (context->flags & CONTEXT_CONSTRUCTED)
|
||||||
context->flags |= CONTEXT_GC;
|
context->flags |= CONTEXT_GC;
|
||||||
@@ -771,6 +779,8 @@ void dhcp_construct_contexts(time_t now)
|
|||||||
/* Not doing DHCP, so no lease system, manage alarms for ra only */
|
/* Not doing DHCP, so no lease system, manage alarms for ra only */
|
||||||
send_alarm(periodic_ra(now), now);
|
send_alarm(periodic_ra(now), now);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
active = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
Reference in New Issue
Block a user