key.data[0] = l->lease_key.data[0];
key.data[1] = l->lease_key.data[1];
- fsp->lease = find_fsp_lease(fsp, &key, l);
+ fsp->lease = find_fsp_lease(
+ fsp,
+ &key,
+ l->current_state,
+ l->lease_version,
+ l->epoch);
if (fsp->lease == NULL) {
TALLOC_FREE(lck);
fsp_free(fsp);
struct fsp_lease *find_fsp_lease(struct files_struct *new_fsp,
const struct smb2_lease_key *key,
- const struct share_mode_lease *l)
+ uint32_t current_state,
+ uint16_t lease_version,
+ uint16_t lease_epoch)
{
struct files_struct *fsp;
new_fsp->lease->ref_count = 1;
new_fsp->lease->sconn = new_fsp->conn->sconn;
new_fsp->lease->lease.lease_key = *key;
- new_fsp->lease->lease.lease_state = l->current_state;
+ new_fsp->lease->lease.lease_state = current_state;
/*
* We internally treat all leases as V2 and update
* the epoch, but when sending breaks it matters if
* the requesting lease was v1 or v2.
*/
- new_fsp->lease->lease.lease_version = l->lease_version;
- new_fsp->lease->lease.lease_epoch = l->epoch;
+ new_fsp->lease->lease.lease_version = lease_version;
+ new_fsp->lease->lease.lease_epoch = lease_epoch;
return new_fsp->lease;
}
bool do_upgrade;
uint32_t existing, requested;
- fsp->lease = find_fsp_lease(fsp, &lease->lease_key, l);
+ fsp->lease = find_fsp_lease(
+ fsp,
+ &lease->lease_key,
+ l->current_state,
+ l->lease_version,
+ l->epoch);
if (fsp->lease == NULL) {
DEBUG(1, ("Did not find existing lease for file %s\n",
fsp_str_dbg(fsp)));
const struct GUID *client_guid,
const struct smb2_lease_key *key);
struct share_mode_lease;
-struct fsp_lease *find_fsp_lease(files_struct *new_fsp,
+struct fsp_lease *find_fsp_lease(struct files_struct *new_fsp,
const struct smb2_lease_key *key,
- const struct share_mode_lease *l);
+ uint32_t current_state,
+ uint16_t lease_version,
+ uint16_t lease_epoch);
NTSTATUS create_file_default(connection_struct *conn,
struct smb_request *req,
uint16_t root_dir_fid,