r2413: Arggg. Stupid, stupid, stupid me ! I added a paranoia test
authorJeremy Allison <jra@samba.org>
Sun, 19 Sep 2004 01:16:45 +0000 (01:16 +0000)
committerGerald (Jerry) Carter <jerry@samba.org>
Wed, 10 Oct 2007 15:52:42 +0000 (10:52 -0500)
case when I was developing the deferred open case and made it
too tight. It will fire (incorrectly) and panic when a client
does a second open for a file with a different mid (multiplex-id)
request. Doh ! This is a perfectly valid thing for a client to
do (have two pending opens with different mids outstanding on
the same file) and currently when the first pending open expires
with a share violation the paranoia code will panic smbd.

It's a rare condition, but obvious now I've looked at the
code.

Fix for bug #1743.

Jeremy.
(This used to be commit e1bf108ae965ae730c67524164fa36497ea905b5)

source3/locking/locking.c

index 8f53b55fc54a45e93cf53bc5ba97f914dbb78c63..d4e8c493d501f84cac37ba0364c5af9a5ae44b09 100644 (file)
@@ -1043,18 +1043,6 @@ int get_deferred_opens(connection_struct *conn,
 
 static BOOL deferred_open_entries_identical( deferred_open_entry *e1, deferred_open_entry *e2)
 {
-#if 1 /* JRA PARANOIA TEST - REMOVE LATER */
-       if (e1->pid == e2->pid &&
-               e1->port == e2->port &&
-               e1->dev == e2->dev &&
-               e1->inode == e2->inode &&
-               ((e1->time.tv_sec != e2->time.tv_sec) ||
-                (e1->time.tv_usec != e2->time.tv_usec) ||
-                (e1->mid != e2->mid))) {
-               smb_panic("PANIC: deferred_open_entries_identical: logic error.\n");
-       }
-#endif
-
        return (e1->pid == e2->pid &&
                e1->mid == e2->mid &&
                e1->port == e2->port &&
@@ -1064,7 +1052,6 @@ static BOOL deferred_open_entries_identical( deferred_open_entry *e1, deferred_o
                e1->time.tv_usec == e2->time.tv_usec);
 }
 
-
 /*******************************************************************
  Delete a specific deferred open entry.
  Ignore if no entry deleted.