From 0a2209c1611f318b546ff08348c6579991579cb9 Mon Sep 17 00:00:00 2001 From: Volker Lendecke Date: Fri, 20 Jun 2014 10:37:14 +0000 Subject: [PATCH] libsmb: Make smb2cli_create cancellable Signed-off-by: Volker Lendecke Reviewed-by: Jeremy Allison --- libcli/smb/smb2cli_create.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/libcli/smb/smb2cli_create.c b/libcli/smb/smb2cli_create.c index 834a88146ce..bcd674e26a8 100644 --- a/libcli/smb/smb2cli_create.c +++ b/libcli/smb/smb2cli_create.c @@ -31,9 +31,11 @@ struct smb2cli_create_state { uint64_t fid_volatile; struct smb_create_returns cr; struct smb2_create_blobs blobs; + struct tevent_req *subreq; }; static void smb2cli_create_done(struct tevent_req *subreq); +static bool smb2cli_create_cancel(struct tevent_req *req); struct tevent_req *smb2cli_create_send( TALLOC_CTX *mem_ctx, @@ -159,9 +161,20 @@ struct tevent_req *smb2cli_create_send( return tevent_req_post(req, ev); } tevent_req_set_callback(subreq, smb2cli_create_done, req); + + state->subreq = subreq; + tevent_req_set_cancel_fn(req, smb2cli_create_cancel); + return req; } +static bool smb2cli_create_cancel(struct tevent_req *req) +{ + struct smb2cli_create_state *state = tevent_req_data(req, + struct smb2cli_create_state); + return tevent_req_cancel(state->subreq); +} + static void smb2cli_create_done(struct tevent_req *subreq) { struct tevent_req *req = -- 2.11.4.GIT