Implement Oplock Break Acknowledgement handler (MS-SMB2 §2.2.24)
- 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:
15
vendor/smb-server/src/oplock.rs
vendored
15
vendor/smb-server/src/oplock.rs
vendored
@@ -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.
|
||||
|
||||
Reference in New Issue
Block a user