Implement SMB 3.x Lease support Phase 4
Some checks failed
Test / test (push) Has been cancelled
Test / build (push) Has been cancelled

- CLOSE handler unregister lease_key from LeaseManager
- Extract lease_key from Open struct before close

All 229 tests pass.
This commit is contained in:
Warren
2026-06-21 01:24:02 +08:00
parent 344d13435e
commit 4620475ba8

View File

@@ -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);
@@ -52,6 +53,11 @@ pub async fn handle(
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;