diff options
author | Jeremy Allison <jra@samba.org> | 2016-06-24 11:40:10 -0700 |
---|---|---|
committer | Ralph Boehme <slow@samba.org> | 2016-06-28 07:27:18 +0200 |
commit | 48569065c81414c79e9fd4d7b77baf92e8ee0aaf (patch) | |
tree | 55d0b9ee90722e28e3420e631fca0c428e9562f1 /source3/lib/tldap_gensec_bind.c | |
parent | 2a322a7671c9ffd0dd600142dd76b5b51a67e185 (diff) | |
download | samba-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.c | 35 |
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) |