summaryrefslogtreecommitdiff
path: root/source3/lib/tldap_gensec_bind.c
diff options
context:
space:
mode:
authorJeremy Allison <jra@samba.org>2016-06-24 11:40:10 -0700
committerRalph Boehme <slow@samba.org>2016-06-28 07:27:18 +0200
commit48569065c81414c79e9fd4d7b77baf92e8ee0aaf (patch)
tree55d0b9ee90722e28e3420e631fca0c428e9562f1 /source3/lib/tldap_gensec_bind.c
parent2a322a7671c9ffd0dd600142dd76b5b51a67e185 (diff)
downloadsamba-48569065c81414c79e9fd4d7b77baf92e8ee0aaf.tar.gz
s3: tldap: Remove asynchronous calls to gensec_update_send()/_recv() as for the spnego backend they're synchronous anyway.
This should prevent nested event loops, and won't make the code performance worse anyway. Signed-off-by: Jeremy Allison <jra@samba.org> Reviewed-by: Ralph Boehme <slow@samba.org>
Diffstat (limited to 'source3/lib/tldap_gensec_bind.c')
-rw-r--r--source3/lib/tldap_gensec_bind.c35
1 files changed, 13 insertions, 22 deletions
diff --git a/source3/lib/tldap_gensec_bind.c b/source3/lib/tldap_gensec_bind.c
index 07f79562bee..9f6e8ae0e3d 100644
--- a/source3/lib/tldap_gensec_bind.c
+++ b/source3/lib/tldap_gensec_bind.c
@@ -45,7 +45,8 @@ struct tldap_gensec_bind_state {
};
static void tldap_gensec_bind_got_mechs(struct tevent_req *subreq);
-static void tldap_gensec_update_done(struct tevent_req *subreq);
+static void tldap_gensec_update_done(struct tldap_gensec_bind_state *state,
+ struct tevent_req *subreq);
static void tldap_gensec_bind_done(struct tevent_req *subreq);
struct tevent_req *tldap_gensec_bind_send(
@@ -215,25 +216,16 @@ static void tldap_gensec_bind_got_mechs(struct tevent_req *subreq)
return;
}
- subreq = gensec_update_send(state, state->ev, state->gensec,
- data_blob_null);
- if (tevent_req_nomem(subreq, req)) {
- return;
- }
- tevent_req_set_callback(subreq, tldap_gensec_update_done, req);
+ state->gensec_status = gensec_update(state->gensec, state,
+ data_blob_null,
+ &state->gensec_output);
+ tldap_gensec_update_done(state, req);
}
-static void tldap_gensec_update_done(struct tevent_req *subreq)
+static void tldap_gensec_update_done(struct tldap_gensec_bind_state *state,
+ struct tevent_req *req)
{
- struct tevent_req *req = tevent_req_callback_data(
- subreq, struct tevent_req);
- struct tldap_gensec_bind_state *state = tevent_req_data(
- req, struct tldap_gensec_bind_state);
-
- state->gensec_status = gensec_update_recv(
- subreq, state, &state->gensec_output);
-
- TALLOC_FREE(subreq);
+ struct tevent_req *subreq;
if (!NT_STATUS_IS_OK(state->gensec_status) &&
!NT_STATUS_EQUAL(state->gensec_status,
@@ -289,11 +281,10 @@ static void tldap_gensec_bind_done(struct tevent_req *subreq)
return;
}
- subreq = gensec_update_send(state, state->ev, state->gensec, input);
- if (tevent_req_nomem(subreq, req)) {
- return;
- }
- tevent_req_set_callback(subreq, tldap_gensec_update_done, req);
+ state->gensec_status = gensec_update(state->gensec, state,
+ input,
+ &state->gensec_output);
+ tldap_gensec_update_done(state, req);
}
TLDAPRC tldap_gensec_bind_recv(struct tevent_req *req)