return NULL;
}
- /* Restore ignored fields in clients (fde and oserver). */
+ /* Restore ignored fields in clients, and talloc hierarchy. */
for (i = 0; i < ARRAY_SIZE(oserver->clients); i++) {
struct client *client = oserver->clients[i];
if (!client)
continue;
+ /* These two were marked CDUMP_IGNORE. */
client->oserver = oserver;
client->fde = tevent_add_fd(ev, client, client->fd,
state_flag_map[client->state],
service_client, client);
tevent_fd_set_auto_close(client->fde);
+ /* cdump knows nothing of talloc. */
+ talloc_steal(oserver, client);
+ talloc_steal(client, client->question);
+ talloc_steal(client, client->answer);
+ talloc_set_destructor(client, cleanup_client);
}
+ talloc_set_destructor(oserver, destroy_oserver);
if (!complete_server(ev, oserver, dumpfile)) {
talloc_free(oserver);
return NULL;