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,
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;
}
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)
struct smb_create_returns *cr);
struct smb_create_returns cr;
uint16_t fnum;
+ struct tevent_req *subreq;
};
static void cli_ntcreate_done(struct tevent_req *subreq);
+static bool cli_ntcreate_cancel(struct tevent_req *req);
struct tevent_req *cli_ntcreate_send(TALLOC_CTX *mem_ctx,
struct tevent_context *ev,
if (smbXcli_conn_protocol(cli->conn) >= PROTOCOL_SMB2_02) {
state->recv = cli_smb2_create_fnum_recv;
+
+ if (cli->use_oplocks) {
+ create_flags |= REQUEST_OPLOCK|REQUEST_BATCH_OPLOCK;
+ }
+
subreq = cli_smb2_create_fnum_send(
state, ev, cli, fname, create_flags, desired_access,
file_attributes, share_access, create_disposition,
return tevent_req_post(req, ev);
}
tevent_req_set_callback(subreq, cli_ntcreate_done, req);
+
+ state->subreq = subreq;
+ tevent_req_set_cancel_fn(req, cli_ntcreate_cancel);
+
return req;
}
tevent_req_done(req);
}
+static bool cli_ntcreate_cancel(struct tevent_req *req)
+{
+ struct cli_ntcreate_state *state = tevent_req_data(
+ req, struct cli_ntcreate_state);
+ return tevent_req_cancel(state->subreq);
+}
+
NTSTATUS cli_ntcreate_recv(struct tevent_req *req, uint16_t *fnum,
struct smb_create_returns *cr)
{