diff options
author | Stefan Metzmacher <metze@samba.org> | 2009-03-19 14:31:43 +0100 |
---|---|---|
committer | Stefan Metzmacher <metze@samba.org> | 2009-03-19 14:39:22 +0100 |
commit | 36e7045340bbc7d6567008bdd87c4cdf717835bd (patch) | |
tree | fda7704e8912aea06a932c37838813f0a24b26ed /lib | |
parent | 88dd6af605dc5754b7e146a068272d37651da710 (diff) | |
download | samba-36e7045340bbc7d6567008bdd87c4cdf717835bd.tar.gz samba-36e7045340bbc7d6567008bdd87c4cdf717835bd.tar.bz2 samba-36e7045340bbc7d6567008bdd87c4cdf717835bd.zip |
tevent: fix the nesting logic
Only tevent_loop_once and tevent_loop_until() should care
about the nesting level.
This fixes the samba3 printing code where we use tevent_loop_wait()
and don't allow nested events.
We still call the nesting hook for all levels, we need to decide
if we really want this...
metze
Diffstat (limited to 'lib')
-rw-r--r-- | lib/tevent/tevent.c | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/lib/tevent/tevent.c b/lib/tevent/tevent.c index 56fd6aec7a..0c02e46f3c 100644 --- a/lib/tevent/tevent.c +++ b/lib/tevent/tevent.c @@ -468,6 +468,8 @@ int _tevent_loop_once(struct tevent_context *ev, const char *location) errno = ELOOP; return -1; } + } + if (ev->nesting.level > 0) { if (ev->nesting.hook_fn) { int ret2; ret2 = ev->nesting.hook_fn(ev, @@ -485,7 +487,7 @@ int _tevent_loop_once(struct tevent_context *ev, const char *location) ret = ev->ops->loop_once(ev, location); - if (ev->nesting.level > 1) { + if (ev->nesting.level > 0) { if (ev->nesting.hook_fn) { int ret2; ret2 = ev->nesting.hook_fn(ev, @@ -525,6 +527,8 @@ int _tevent_loop_until(struct tevent_context *ev, errno = ELOOP; return -1; } + } + if (ev->nesting.level > 0) { if (ev->nesting.hook_fn) { int ret2; ret2 = ev->nesting.hook_fn(ev, @@ -547,7 +551,7 @@ int _tevent_loop_until(struct tevent_context *ev, } } - if (ev->nesting.level > 1) { + if (ev->nesting.level > 0) { if (ev->nesting.hook_fn) { int ret2; ret2 = ev->nesting.hook_fn(ev, @@ -601,9 +605,5 @@ int tevent_common_loop_wait(struct tevent_context *ev, */ int _tevent_loop_wait(struct tevent_context *ev, const char *location) { - int ret; - ev->nesting.level++; - ret = ev->ops->loop_wait(ev, location); - ev->nesting.level--; - return ret; + return ev->ops->loop_wait(ev, location); } |