diff options
author | Volker Lendecke <vl@samba.org> | 2014-06-20 10:38:10 +0000 |
---|---|---|
committer | Volker Lendecke <vl@samba.org> | 2014-06-21 20:38:11 +0200 |
commit | bb6b31dd866b0a06e2026f072db8c61a8a986ab6 (patch) | |
tree | 1d114e9a670a95a07b07916e87bd1fff3f465dcd | |
parent | c597c9344ca7630335d8fad1ddb4466b01eb9aff (diff) | |
download | samba-bb6b31dd866b0a06e2026f072db8c61a8a986ab6.tar.gz samba-bb6b31dd866b0a06e2026f072db8c61a8a986ab6.tar.xz samba-bb6b31dd866b0a06e2026f072db8c61a8a986ab6.zip |
libsmb: Make cli_ntcreate1 cancellable
Signed-off-by: Volker Lendecke <vl@samba.org>
Reviewed-by: Jeremy Allison <jra@samba.org>
-rw-r--r-- | source3/libsmb/clifile.c | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/source3/libsmb/clifile.c b/source3/libsmb/clifile.c index 3ec5e9aafb..2ee6eda956 100644 --- a/source3/libsmb/clifile.c +++ b/source3/libsmb/clifile.c @@ -1796,9 +1796,11 @@ struct cli_ntcreate1_state { uint16_t vwv[24]; uint16_t fnum; struct smb_create_returns cr; + struct tevent_req *subreq; }; static void cli_ntcreate1_done(struct tevent_req *subreq); +static bool cli_ntcreate1_cancel(struct tevent_req *req); static struct tevent_req *cli_ntcreate1_send(TALLOC_CTX *mem_ctx, struct tevent_context *ev, @@ -1866,6 +1868,10 @@ static struct tevent_req *cli_ntcreate1_send(TALLOC_CTX *mem_ctx, return tevent_req_post(req, ev); } tevent_req_set_callback(subreq, cli_ntcreate1_done, req); + + state->subreq = subreq; + tevent_req_set_cancel_fn(req, cli_ntcreate1_cancel); + return req; } @@ -1901,6 +1907,13 @@ static void cli_ntcreate1_done(struct tevent_req *subreq) tevent_req_done(req); } +static bool cli_ntcreate1_cancel(struct tevent_req *req) +{ + struct cli_ntcreate1_state *state = tevent_req_data( + req, struct cli_ntcreate1_state); + return tevent_req_cancel(state->subreq); +} + static NTSTATUS cli_ntcreate1_recv(struct tevent_req *req, uint16_t *pfnum, struct smb_create_returns *cr) |