Author: jra
Date: 2006-03-25 02:43:42 +0000 (Sat, 25 Mar 2006)
New Revision: 14706

WebSVN: 
http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=14706

Log:
Remember to treat Windows and POSIX locks differently
on query.
Jeremy.

Modified:
   trunk/source/locking/brlock.c


Changeset:
Modified: trunk/source/locking/brlock.c
===================================================================
--- trunk/source/locking/brlock.c       2006-03-25 02:35:40 UTC (rev 14705)
+++ trunk/source/locking/brlock.c       2006-03-25 02:43:42 UTC (rev 14706)
@@ -1119,14 +1119,20 @@
 
        /* Make sure existing locks don't conflict */
        for (i=0; i < br_lck->num_locks; i++) {
-               /*
-                * Our own locks don't conflict.
-                */
-               if (brl_conflict_other(&locks[i], &lock)) {
-                       *psmbpid = locks[i].context.smbpid;
-                       *pstart = locks[i].start;
-                       *psize = locks[i].size;
-                       *plock_type = locks[i].lock_type = *plock_type;
+               struct lock_struct *exlock = &locks[i];
+               BOOL conflict = False;
+
+               if (exlock->lock_flav == WINDOWS_LOCK) {
+                       conflict = brl_conflict(exlock, &lock);
+               } else {        
+                       conflict = brl_conflict_posix(exlock, &lock);
+               }
+
+               if (conflict) {
+                       *psmbpid = exlock->context.smbpid;
+                       *pstart = exlock->start;
+                       *psize = exlock->size;
+                       *plock_type = exlock->lock_type;
                        return NT_STATUS_LOCK_NOT_GRANTED;
                }
        }

Reply via email to