#include "../librpc/gen_ndr/ndr_security.h"
#include "../librpc/gen_ndr/open_files.h"
#include "auth.h"
+#include "serverid.h"
#include "messages.h"
extern const struct generic_mapping file_generic_mapping;
(unsigned int)entry->share_access,
(unsigned int)entry->private_options));
+ if (server_id_is_disconnected(&entry->pid)) {
+ /*
+ * note: cleanup should have been done by
+ * delay_for_batch_oplocks()
+ */
+ return false;
+ }
+
DEBUG(10,("share_conflict: access_mask = 0x%x, share_access = 0x%x\n",
(unsigned int)access_mask, (unsigned int)share_access));
return false;
}
+ if (server_id_is_disconnected(&batch_entry->pid)) {
+ /*
+ * TODO: clean up.
+ * This could be achieved by sending a break message
+ * to ourselves. Special considerations for files
+ * with delete_on_close flag set!
+ *
+ * For now we keep it simple and do not
+ * allow delete on close for durable handles.
+ */
+ return false;
+ }
+
/* Found a batch oplock */
send_break_message(fsp, batch_entry, mid, oplock_request);
return true;
return false;
}
+ if (server_id_is_disconnected(&ex_entry->pid)) {
+ /*
+ * since only durable handles can get disconnected,
+ * and we can only get durable handles with batch oplocks,
+ * this should actually never be reached...
+ */
+ return false;
+ }
+
/* Found an exclusive or batch oplock */
delay_it = is_delete_request(fsp) ?