From 22adab2004d56918b40fff0f0716d8a889c9f007 Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Thu, 10 Feb 2005 03:16:33 +0000 Subject: r5292: ensure we cleanup the epoll_fd on event context destruction (This used to be commit e820fca5062026810c5bd4827941f34c19a5e847) --- source4/lib/events/events.c | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/source4/lib/events/events.c b/source4/lib/events/events.c index 408fe8c6f1..64cf8f41bf 100644 --- a/source4/lib/events/events.c +++ b/source4/lib/events/events.c @@ -112,6 +112,21 @@ struct event_context { }; +/* + destroy an event context +*/ +static int event_context_destructor(void *ptr) +{ +#if WITH_EPOLL + struct event_context *ev = talloc_get_type(ptr, struct event_context); + if (ev->epoll_fd != -1) { + close(ev->epoll_fd); + ev->epoll_fd = -1; + } +#endif + return 0; +} + /* create a event_context structure. This must be the first events call, and all subsequent calls pass this event_context as the first @@ -128,6 +143,8 @@ struct event_context *event_context_init(TALLOC_CTX *mem_ctx) ev->epoll_fd = epoll_create(64); #endif + talloc_set_destructor(ev, event_context_destructor); + return ev; } -- cgit