diff options
author | Andrew Bartlett <abartlet@samba.org> | 2008-11-13 14:07:29 +1100 |
---|---|---|
committer | Andrew Bartlett <abartlet@samba.org> | 2008-11-17 10:07:24 +1100 |
commit | 16a3a2da78b1f2d5a1077e382a26466944f6c59e (patch) | |
tree | fca48202235bbe4d947619cbd91ddb7f3c8a10af | |
parent | cf5c919c744c714b9be849e4d6424f7df92b328d (diff) | |
download | samba-16a3a2da78b1f2d5a1077e382a26466944f6c59e.tar.gz samba-16a3a2da78b1f2d5a1077e382a26466944f6c59e.tar.bz2 samba-16a3a2da78b1f2d5a1077e382a26466944f6c59e.zip |
Remove timeout event once we are calling the callback.
(Even if the callback takes some time, this isn't a ldb_tdb timeout
any more)
Andrew Bartlett
-rw-r--r-- | source4/lib/ldb/ldb_tdb/ldb_tdb.c | 9 | ||||
-rw-r--r-- | source4/lib/ldb/ldb_tdb/ldb_tdb.h | 1 |
2 files changed, 6 insertions, 4 deletions
diff --git a/source4/lib/ldb/ldb_tdb/ldb_tdb.c b/source4/lib/ldb/ldb_tdb/ldb_tdb.c index 34a4e03965..9e3ad80705 100644 --- a/source4/lib/ldb/ldb_tdb/ldb_tdb.c +++ b/source4/lib/ldb/ldb_tdb/ldb_tdb.c @@ -1076,12 +1076,14 @@ static void ltdb_callback(struct event_context *ev, } if (!ctx->callback_failed) { + /* Once we are done, we do not need timeout events */ + talloc_free(ctx->timeout_event); ltdb_request_done(ctx->req, ret); } } static int ltdb_handle_request(struct ldb_module *module, - struct ldb_request *req) + struct ldb_request *req) { struct event_context *ev; struct ltdb_context *ac; @@ -1115,10 +1117,9 @@ static int ltdb_handle_request(struct ldb_module *module, return LDB_ERR_OPERATIONS_ERROR; } - tv.tv_sec = req->starttime + req->timeout; - te = event_add_timed(ev, ac, tv, ltdb_timeout, ac); - if (NULL == te) { + ac->timeout_event = event_add_timed(ev, ac, tv, ltdb_timeout, ac); + if (NULL == ac->timeout_event) { return LDB_ERR_OPERATIONS_ERROR; } diff --git a/source4/lib/ldb/ldb_tdb/ldb_tdb.h b/source4/lib/ldb/ldb_tdb/ldb_tdb.h index 61e90bccc6..c78a8172c7 100644 --- a/source4/lib/ldb/ldb_tdb/ldb_tdb.h +++ b/source4/lib/ldb/ldb_tdb/ldb_tdb.h @@ -50,6 +50,7 @@ struct ltdb_context { struct ldb_dn *base; enum ldb_scope scope; const char * const *attrs; + struct timed_event *timeout_event; }; /* special record types */ |