r1089: Removed spurious oplock message in deferred open processing.
authorJeremy Allison <jra@samba.org>
Tue, 8 Jun 2004 22:13:59 +0000 (22:13 +0000)
committerGerald (Jerry) Carter <jerry@samba.org>
Wed, 10 Oct 2007 15:51:54 +0000 (10:51 -0500)
Fix smb signing sequence counts.
Jeremy.

source/smbd/open.c
source/smbd/oplock.c
source/smbd/process.c

index 04e074d56eb380467111781496d79df5b496e314..aca9756628648fe10fc33193e6ccb65d608a50d1 100644 (file)
@@ -862,6 +862,16 @@ deferred open entry for mid %u, file %s\n",
        if (!add_deferred_open(mid, ptv, dev, inode, global_oplock_port, fname)) {
                remove_sharing_violation_open_smb_message(mid);
        }
+
+       /*
+        * Push the MID of this packet on the signing queue.
+        * We only do this once, the first time we push the packet
+        * onto the deferred open queue, as this has a side effect
+        * of incrementing the response sequence number.
+        */
+
+       srv_defer_sign_response(mid);
+
        SAFE_FREE(de_array);
 }
 
index 6739f5654f150908aafd9b0edafc136c68a10227..c34fa609542e493254173462f5add32ba2b7988a 100644 (file)
@@ -410,7 +410,7 @@ pid %d, port %d, dev = %x, inode = %.0f, mid = %u\n",
 
                                schedule_sharing_violation_open_smb_message(mid);
                        }
-                       break;
+                       return True;
 
                /* 
                 * Keep this as a debug case - eventually we can remove it.
index 698c8475f7984a77c451fc992f8d51684807da9c..05e4d0b1d9a1fdefe0d372490b457325b9ab1820 100644 (file)
@@ -121,9 +121,6 @@ static BOOL push_queued_message(enum q_type qt, char *buf, int msg_len, struct t
                DLIST_ADD_END(smb_sharing_violation_queue, msg, tmp_msg);
        }
 
-       /* Push the MID of this packet on the signing queue. */
-       srv_defer_sign_response(SVAL(buf,smb_mid));
-
        DEBUG(10,("push_message: pushed message length %u on queue %s\n",
                (unsigned int)msg_len,
                qt == OPLOCK_QUEUE ? "smb_oplock_queue" : "smb_sharing_violation_queue" ));
@@ -138,7 +135,12 @@ static BOOL push_queued_message(enum q_type qt, char *buf, int msg_len, struct t
 
 BOOL push_oplock_pending_smb_message(char *buf, int msg_len)
 {
-       return push_queued_message(OPLOCK_QUEUE, buf, msg_len, NULL, NULL, 0);
+       BOOL ret = push_queued_message(OPLOCK_QUEUE, buf, msg_len, NULL, NULL, 0);
+       if (ret) {
+               /* Push the MID of this packet on the signing queue. */
+               srv_defer_sign_response(SVAL(buf,smb_mid));
+       }
+       return ret;
 }
 
 /****************************************************************************