summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVolker Lendecke <vl@samba.org>2014-06-20 10:37:46 +0000
committerVolker Lendecke <vl@samba.org>2014-06-21 20:38:11 +0200
commitc597c9344ca7630335d8fad1ddb4466b01eb9aff (patch)
treeca07c995b1a70f27a5df1cef07a3e3e2715135c9
parent0a2209c1611f318b546ff08348c6579991579cb9 (diff)
downloadsamba-c597c9344ca7630335d8fad1ddb4466b01eb9aff.tar.gz
samba-c597c9344ca7630335d8fad1ddb4466b01eb9aff.tar.xz
samba-c597c9344ca7630335d8fad1ddb4466b01eb9aff.zip
libsmb: Make cli_smb2_create_fnum cancellable
Signed-off-by: Volker Lendecke <vl@samba.org> Reviewed-by: Jeremy Allison <jra@samba.org>
-rw-r--r--source3/libsmb/cli_smb2_fnum.c13
1 files changed, 13 insertions, 0 deletions
diff --git a/source3/libsmb/cli_smb2_fnum.c b/source3/libsmb/cli_smb2_fnum.c
index 6c24038674..87edf4e298 100644
--- a/source3/libsmb/cli_smb2_fnum.c
+++ b/source3/libsmb/cli_smb2_fnum.c
@@ -157,9 +157,11 @@ struct cli_smb2_create_fnum_state {
struct cli_state *cli;
struct smb_create_returns cr;
uint16_t fnum;
+ struct tevent_req *subreq;
};
static void cli_smb2_create_fnum_done(struct tevent_req *subreq);
+static bool cli_smb2_create_fnum_cancel(struct tevent_req *req);
struct tevent_req *cli_smb2_create_fnum_send(TALLOC_CTX *mem_ctx,
struct tevent_context *ev,
@@ -215,6 +217,10 @@ struct tevent_req *cli_smb2_create_fnum_send(TALLOC_CTX *mem_ctx,
return tevent_req_post(req, ev);
}
tevent_req_set_callback(subreq, cli_smb2_create_fnum_done, req);
+
+ state->subreq = subreq;
+ tevent_req_set_cancel_fn(req, cli_smb2_create_fnum_cancel);
+
return req;
}
@@ -241,6 +247,13 @@ static void cli_smb2_create_fnum_done(struct tevent_req *subreq)
tevent_req_done(req);
}
+static bool cli_smb2_create_fnum_cancel(struct tevent_req *req)
+{
+ struct cli_smb2_create_fnum_state *state = tevent_req_data(
+ req, struct cli_smb2_create_fnum_state);
+ return tevent_req_cancel(state->subreq);
+}
+
NTSTATUS cli_smb2_create_fnum_recv(struct tevent_req *req, uint16_t *pfnum,
struct smb_create_returns *cr)
{