tevent: check signal events first in event_loop_once
authorStefan Metzmacher <metze@samba.org>
Mon, 16 Mar 2009 11:45:48 +0000 (12:45 +0100)
committerStefan Metzmacher <metze@samba.org>
Tue, 17 Mar 2009 18:58:56 +0000 (19:58 +0100)
We also check for signal events directly before and after
the select/epoll calls.

metze

lib/tevent/tevent_epoll.c
lib/tevent/tevent_select.c
lib/tevent/tevent_standard.c

index 38a14883ccc13866cb519b19b30d78be0030b72b..6c960c74918930cce15128fdd6b052362add8013 100644 (file)
@@ -404,6 +404,11 @@ static int epoll_event_loop_once(struct tevent_context *ev, const char *location
                                                           struct epoll_event_context);
        struct timeval tval;
 
+       if (epoll_ev->ev->signal_events &&
+           tevent_common_check_signal(epoll_ev->ev)) {
+               return 0;
+       }
+
        tval = tevent_common_loop_timer_delay(ev);
        if (tevent_timeval_is_zero(&tval)) {
                return 0;
index bbbb95fce8bf156dcf82618ce161552024d9baef..b666b4fba4ac2cf02713debac13f22e376d58ca7 100644 (file)
@@ -210,6 +210,11 @@ static int select_event_loop_once(struct tevent_context *ev, const char *locatio
                                                           struct select_event_context);
        struct timeval tval;
 
+       if (select_ev->ev->signal_events &&
+           tevent_common_check_signal(select_ev->ev)) {
+               return 0;
+       }
+
        tval = tevent_common_loop_timer_delay(ev);
        if (tevent_timeval_is_zero(&tval)) {
                return 0;
index 0ee99ca56b26bb0e4e2537b286cf65c1a9ecd5d0..40a08d7ab0812b707393bfa06ea64c8a3960a136 100644 (file)
@@ -524,6 +524,11 @@ static int std_event_loop_once(struct tevent_context *ev, const char *location)
                                                           struct std_event_context);
        struct timeval tval;
 
+       if (std_ev->ev->signal_events &&
+           tevent_common_check_signal(std_ev->ev)) {
+               return 0;
+       }
+
        tval = tevent_common_loop_timer_delay(ev);
        if (tevent_timeval_is_zero(&tval)) {
                return 0;