If it has a parent, free the parent. Otherwise, free the request.
}
/*
+ * Wrapper for talloc pools. If there's no parent, just free the
+ * request. If there is a parent, free the parent INSTEAD of the
+ * request.
+ */
+static void request_free(REQUEST *request)
+{
+ void *ptr = talloc_parent(request);
+
+ if (ptr) {
+ talloc_free(ptr);
+ } else {
+ talloc_free(request);
+ }
+}
+
+
+/*
* Only ever called from the master thread.
*/
STATE_MACHINE_DECL(request_done)
if (request->ev) fr_event_delete(el, &request->ev);
- talloc_free(request);
+ request_free(request);
}
} else {
RDEBUG("Not sending reply");
}
- talloc_free(request);
+ request_free(request);
return 1;
}
}
#endif
- talloc_free(request);
+ request_free(request);
/*
* Delete it from the list, and continue;