From: Jeremy Allison Date: Sun, 19 Sep 2004 01:16:45 +0000 (+0000) Subject: r2413: Arggg. Stupid, stupid, stupid me ! I added a paranoia test X-Git-Tag: samba-misc-tags/initial-v3-0-unstable~5790 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=e1bf108ae965ae730c67524164fa36497ea905b5;p=thirdparty%2Fsamba.git r2413: Arggg. Stupid, stupid, stupid me ! I added a paranoia test 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. --- diff --git a/source/locking/locking.c b/source/locking/locking.c index 8f53b55fc54..d4e8c493d50 100644 --- a/source/locking/locking.c +++ b/source/locking/locking.c @@ -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.