From 4620475ba896389dea9d3eecc0c0e5ed02fadb02 Mon Sep 17 00:00:00 2001 From: Warren Date: Sun, 21 Jun 2026 01:24:02 +0800 Subject: [PATCH] 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. --- vendor/smb-server/src/handlers/close.rs | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/vendor/smb-server/src/handlers/close.rs b/vendor/smb-server/src/handlers/close.rs index 6707640..10ec359 100644 --- a/vendor/smb-server/src/handlers/close.rs +++ b/vendor/smb-server/src/handlers/close.rs @@ -44,6 +44,7 @@ pub async fn handle( let path = open.last_path.clone(); let delete_on_close = open.delete_on_close; 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; drop(open); @@ -51,6 +52,11 @@ pub async fn handle( if oplock_level > 0 { 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 server.lock_manager.clear(&req.file_id).await;