diff options
author | Simo Sorce <idra@samba.org> | 2009-03-10 10:05:52 -0400 |
---|---|---|
committer | Simo Sorce <idra@samba.org> | 2009-03-10 11:08:53 -0400 |
commit | 97cccb22194380ce84bf6188df90e2438f1176db (patch) | |
tree | 3d7135966d703ea2c2d8d7f90db54ab6c750e76d | |
parent | 9579a6f193f570e4ce2af80f4aac7c2f25ae5b22 (diff) | |
download | samba-97cccb22194380ce84bf6188df90e2438f1176db.tar.gz samba-97cccb22194380ce84bf6188df90e2438f1176db.tar.bz2 samba-97cccb22194380ce84bf6188df90e2438f1176db.zip |
Fix extended operation return path.
Extended operations return was not going thorugh the same patch as others
leaving the ctx around. Plus we were neutralizing the spy too early so that it
didn't set the request_terminated flag as it should have.
This should hopefully fix the failures in the build farm.
-rw-r--r-- | source4/lib/ldb/ldb_tdb/ldb_tdb.c | 20 |
1 files changed, 12 insertions, 8 deletions
diff --git a/source4/lib/ldb/ldb_tdb/ldb_tdb.c b/source4/lib/ldb/ldb_tdb/ldb_tdb.c index d38cb828bb..9df62be936 100644 --- a/source4/lib/ldb/ldb_tdb/ldb_tdb.c +++ b/source4/lib/ldb/ldb_tdb/ldb_tdb.c @@ -1020,13 +1020,14 @@ static void ltdb_timeout(struct tevent_context *ev, ctx = talloc_get_type(private_data, struct ltdb_context); if (!ctx->request_terminated) { - /* neutralize the spy */ - ctx->spy->ctx = NULL; - /* request is done now */ ltdb_request_done(ctx, LDB_ERR_TIME_LIMIT_EXCEEDED); } + if (!ctx->request_terminated) { + /* neutralize the spy */ + ctx->spy->ctx = NULL; + } talloc_free(ctx); } @@ -1086,10 +1087,9 @@ static void ltdb_callback(struct tevent_context *ev, ctx = talloc_get_type(private_data, struct ltdb_context); - if (!ctx->request_terminated) { - /* neutralize the spy */ - ctx->spy->ctx = NULL; - } else goto done; + if (ctx->request_terminated) { + goto done; + } switch (ctx->req->operation) { case LDB_SEARCH: @@ -1109,7 +1109,7 @@ static void ltdb_callback(struct tevent_context *ev, break; case LDB_EXTENDED: ltdb_handle_extended(ctx); - return; + goto done; default: /* no other op supported */ ret = LDB_ERR_UNWILLING_TO_PERFORM; @@ -1121,6 +1121,10 @@ static void ltdb_callback(struct tevent_context *ev, } done: + if (!ctx->request_terminated) { + /* neutralize the spy */ + ctx->spy->ctx = NULL; + } talloc_free(ctx); } |