summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorStefan Metzmacher <metze@samba.org>2009-03-19 14:31:43 +0100
committerStefan Metzmacher <metze@samba.org>2009-03-19 14:39:22 +0100
commit36e7045340bbc7d6567008bdd87c4cdf717835bd (patch)
treefda7704e8912aea06a932c37838813f0a24b26ed
parent88dd6af605dc5754b7e146a068272d37651da710 (diff)
downloadsamba-36e7045340bbc7d6567008bdd87c4cdf717835bd.tar.gz
samba-36e7045340bbc7d6567008bdd87c4cdf717835bd.tar.xz
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
-rw-r--r--lib/tevent/tevent.c14
1 files changed, 7 insertions, 7 deletions
diff --git a/lib/tevent/tevent.c b/lib/tevent/tevent.c
index 56fd6aec7aa..0c02e46f3ca 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);
}