int retval = 0;
struct fd_list *l;
+ if (ctx->options & DHCPCD_FORKED)
+ goto freeit;
+
if (ctx->control_fd == -1)
return 0;
eloop_event_delete(ctx->eloop, ctx->control_fd, 0);
retval = -1;
}
+freeit:
while ((l = TAILQ_FIRST(&ctx->control_fds))) {
TAILQ_REMOVE(&ctx->control_fds, l, next);
eloop_event_delete(ctx->eloop, l->fd, 0);
ipv4_ctxfree(&ctx);
ipv6_ctxfree(&ctx);
dev_stop(&ctx, !(ctx.options & DHCPCD_FORKED));
- if (!(ctx.options & DHCPCD_FORKED) && control_stop(&ctx) == -1)
+ if (control_stop(&ctx) == -1)
syslog(LOG_ERR, "control_stop: %m:");
if (ctx.pid_fd != -1) {
close(ctx.pid_fd);