tevent_poll: Use the poll_event_context_destructor always
authorVolker Lendecke <vl@samba.org>
Thu, 31 Jan 2013 15:28:08 +0000 (16:28 +0100)
committerJeremy Allison <jra@samba.org>
Sun, 3 Feb 2013 03:52:40 +0000 (19:52 -0800)
This is in preparation for the next patch to NULL out the event_ctx
pointers in the poll_ev->fresh list

Signed-off-by: Volker Lendecke <vl@samba.org>
Reviewed-by: Stefan Metzmacher <metze@samba.org>
Reviewed-by: Jeremy Allison <jra@samba.org>
lib/tevent/tevent_poll.c

index b6265fd3d048abc276d94436f673139c48bc5a5b..f64dd386f97e543a974f76dae15f847de981c5b5 100644 (file)
@@ -55,12 +55,18 @@ struct poll_event_context {
        int exit_code;
 };
 
-static int poll_event_mt_destructor(struct poll_event_context *poll_ev)
+static int poll_event_context_destructor(struct poll_event_context *poll_ev)
 {
-       if (poll_ev->signal_fd != -1) {
-               close(poll_ev->signal_fd);
-               poll_ev->signal_fd = -1;
+       if (poll_ev->signal_fd == -1) {
+               /*
+                * Non-threaded, no signal pipe
+                */
+               return 0;
        }
+
+       close(poll_ev->signal_fd);
+       poll_ev->signal_fd = -1;
+
        if (poll_ev->num_fds == 0) {
                return 0;
        }
@@ -85,6 +91,7 @@ static int poll_event_context_init(struct tevent_context *ev)
        poll_ev->ev = ev;
        poll_ev->signal_fd = -1;
        ev->additional_data = poll_ev;
+       talloc_set_destructor(poll_ev, poll_event_context_destructor);
        return 0;
 }
 
@@ -140,7 +147,7 @@ static int poll_event_context_init_mt(struct tevent_context *ev)
 
        poll_ev->num_fds = 1;
 
-       talloc_set_destructor(poll_ev, poll_event_mt_destructor);
+       talloc_set_destructor(poll_ev, poll_event_context_destructor);
 
        return 0;
 }