Implement SMB 3.x Lease support Phase 4
- CLOSE handler unregister lease_key from LeaseManager - Extract lease_key from Open struct before close All 229 tests pass.
This commit is contained in:
6
vendor/smb-server/src/handlers/close.rs
vendored
6
vendor/smb-server/src/handlers/close.rs
vendored
@@ -44,6 +44,7 @@ pub async fn handle(
|
|||||||
let path = open.last_path.clone();
|
let path = open.last_path.clone();
|
||||||
let delete_on_close = open.delete_on_close;
|
let delete_on_close = open.delete_on_close;
|
||||||
let oplock_level = open.oplock_level;
|
let oplock_level = open.oplock_level;
|
||||||
|
let lease_key = open.lease_key.clone(); // Phase 4: for lease unregister
|
||||||
let want_attrs = req.flags & FLAG_POSTQUERY_ATTRIB != 0;
|
let want_attrs = req.flags & FLAG_POSTQUERY_ATTRIB != 0;
|
||||||
drop(open);
|
drop(open);
|
||||||
|
|
||||||
@@ -51,6 +52,11 @@ pub async fn handle(
|
|||||||
if oplock_level > 0 {
|
if oplock_level > 0 {
|
||||||
server.oplock_manager.unregister(&path, &req.file_id).await;
|
server.oplock_manager.unregister(&path, &req.file_id).await;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Phase 4: Unregister from LeaseManager if lease was granted
|
||||||
|
if let Some(lease_key) = lease_key {
|
||||||
|
server.lease_manager.unregister(&lease_key).await;
|
||||||
|
}
|
||||||
|
|
||||||
// Phase 7: Clear all byte-range locks for this file
|
// Phase 7: Clear all byte-range locks for this file
|
||||||
server.lock_manager.clear(&req.file_id).await;
|
server.lock_manager.clear(&req.file_id).await;
|
||||||
|
|||||||
Reference in New Issue
Block a user