Implement Oplock Break Acknowledgement handler (MS-SMB2 §2.2.24)
Some checks failed
Test / test (push) Has been cancelled
Test / build (push) Has been cancelled

- Parse client's OPLOCK_BREAK_ACK
- Update Open.oplock_level in Open struct
- Update OplockManager entry via update_oplock_level()
- Return confirmation response

All 229 tests pass.
This commit is contained in:
Warren
2026-06-21 01:15:21 +08:00
parent 063a697e83
commit 3cf503d05f
2 changed files with 58 additions and 13 deletions

View File

@@ -191,6 +191,21 @@ pub struct LockRange {
pub tree_id: u32,
}
impl OplockManager {
/// Update oplock level after client acknowledges a break (MS-SMB2 §2.2.24).
pub async fn update_oplock_level(&self, path: &SmbPath, file_id: FileId, new_level: u8) {
let mut file_opens = self.file_opens.write().await;
if let Some(entries) = file_opens.get_mut(path) {
for entry in entries.iter_mut() {
if entry.file_id == file_id {
entry.oplock_level = new_level;
break;
}
}
}
}
}
/// Global byte-range lock manager (MS-SMB2 §3.3.1.9).
pub struct LockManager {
/// FileId → active locks on that file.