svn commit: samba r8513 - in trunk/source: include smbd
vlendec at samba.org
vlendec at samba.org
Sat Jul 16 09:56:06 GMT 2005
Author: vlendec
Date: 2005-07-16 09:56:05 +0000 (Sat, 16 Jul 2005)
New Revision: 8513
WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=8513
Log:
Feed Jeremy's paranoia -- back out the last patch :-)
Thanks,
Volker
Modified:
trunk/source/include/smb.h
trunk/source/smbd/oplock.c
Changeset:
Modified: trunk/source/include/smb.h
===================================================================
--- trunk/source/include/smb.h 2005-07-16 09:09:19 UTC (rev 8512)
+++ trunk/source/include/smb.h 2005-07-16 09:56:05 UTC (rev 8513)
@@ -1511,6 +1511,7 @@
/* Message types */
#define OPLOCK_BREAK_CMD 0x1
#define KERNEL_OPLOCK_BREAK_CMD 0x2
+#define LEVEL_II_OPLOCK_BREAK_CMD 0x3
#define ASYNC_LEVEL_II_OPLOCK_BREAK_CMD 0x4
/* Add the "deferred open" message. */
Modified: trunk/source/smbd/oplock.c
===================================================================
--- trunk/source/smbd/oplock.c 2005-07-16 09:09:19 UTC (rev 8512)
+++ trunk/source/smbd/oplock.c 2005-07-16 09:56:05 UTC (rev 8513)
@@ -381,6 +381,7 @@
break;
case OPLOCK_BREAK_CMD:
+ case LEVEL_II_OPLOCK_BREAK_CMD:
case ASYNC_LEVEL_II_OPLOCK_BREAK_CMD:
/* Ensure that the msg length is correct. */
@@ -482,7 +483,8 @@
* case.
*/
- if (break_cmd_type != OPLOCK_BREAK_CMD) {
+ if (!((break_cmd_type == OPLOCK_BREAK_CMD) ||
+ (break_cmd_type == LEVEL_II_OPLOCK_BREAK_CMD))) {
return True;
}
@@ -995,6 +997,7 @@
SMB_DEV_T dev = share_entry->dev;
SMB_INO_T inode = share_entry->inode;
unsigned long file_id = share_entry->share_file_id;
+ uint16 break_cmd_type;
if(pid == share_entry->pid) {
/* We are breaking our own oplock, make sure it's us. */
@@ -1024,7 +1027,13 @@
/* We need to send a OPLOCK_BREAK_CMD message to the port in the share mode entry. */
- SSVAL(op_break_msg,OPBRK_MESSAGE_CMD_OFFSET,OPLOCK_BREAK_CMD);
+ if (LEVEL_II_OPLOCK_TYPE(share_entry->op_type)) {
+ break_cmd_type = LEVEL_II_OPLOCK_BREAK_CMD;
+ } else {
+ break_cmd_type = OPLOCK_BREAK_CMD;
+ }
+
+ SSVAL(op_break_msg,OPBRK_MESSAGE_CMD_OFFSET,break_cmd_type);
memcpy(op_break_msg+OPLOCK_BREAK_PID_OFFSET,(char *)&pid,sizeof(pid));
memcpy(op_break_msg+OPLOCK_BREAK_DEV_OFFSET,(char *)&dev,sizeof(dev));
memcpy(op_break_msg+OPLOCK_BREAK_INODE_OFFSET,(char *)&inode,sizeof(inode));
@@ -1110,7 +1119,7 @@
* Test to see if this is the reply we are awaiting (ie. the one we sent with the CMD_REPLY flag OR'ed in).
*/
if((SVAL(reply_msg_start,OPBRK_MESSAGE_CMD_OFFSET) & CMD_REPLY) &&
- ((SVAL(reply_msg_start,OPBRK_MESSAGE_CMD_OFFSET) & ~CMD_REPLY) == OPLOCK_BREAK_CMD) &&
+ ((SVAL(reply_msg_start,OPBRK_MESSAGE_CMD_OFFSET) & ~CMD_REPLY) == break_cmd_type) &&
(reply_from_port == share_entry->op_port) &&
(memcmp(&reply_msg_start[OPLOCK_BREAK_PID_OFFSET], &op_break_msg[OPLOCK_BREAK_PID_OFFSET],
OPLOCK_BREAK_MSG_LEN - OPLOCK_BREAK_PID_OFFSET) == 0)) {
More information about the samba-cvs
mailing list