svn commit: samba r8180 - in trunk/source/smbd: .

jra at samba.org jra at samba.org
Wed Jul 6 12:06:02 GMT 2005


Author: jra
Date: 2005-07-06 12:06:01 +0000 (Wed, 06 Jul 2005)
New Revision: 8180

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

Log:
Added locking...
Jeremy.

Modified:
   trunk/source/smbd/trans2.c


Changeset:
Modified: trunk/source/smbd/trans2.c
===================================================================
--- trunk/source/smbd/trans2.c	2005-07-06 09:50:31 UTC (rev 8179)
+++ trunk/source/smbd/trans2.c	2005-07-06 12:06:01 UTC (rev 8180)
@@ -2828,34 +2828,34 @@
 			return set_bad_path_error(errno, bad_path, outbuf, ERRDOS,ERRbadpath);
 		}
 
+#if 1 /* JRA - What is the cost.. */
 		{
 			int i, num_shares;
 			share_mode_entry *shares;
-			BOOL deleted = False;
 
 			/* We need to return NT_STATUS_DELETE_PENDING if any
 			 * process has that flag set. */
 
+			lock_share_entry(conn, sbuf.st_dev, sbuf.st_ino);
+
 			num_shares = get_share_modes(conn, sbuf.st_dev,
 						     sbuf.st_ino, &shares);
 
 			for (i=0; i<num_shares; i++) {
-				if ((shares[i].create_options &
-				     FILE_DELETE_ON_CLOSE) == 0) {
-					continue;
+				if ((shares[i].create_options & FILE_DELETE_ON_CLOSE)) {
+					unlock_share_entry(conn, sbuf.st_dev, sbuf.st_ino);
+					SAFE_FREE(shares);
+					return ERROR_NT(NT_STATUS_DELETE_PENDING);
 				}
-				deleted = True;
-				break;
 			}
 
+			unlock_share_entry(conn, sbuf.st_dev, sbuf.st_ino);
+
 			if (num_shares > 0) {
 				SAFE_FREE(shares);
 			}
-
-			if (deleted) {
-				return ERROR_NT(NT_STATUS_DELETE_PENDING);
-			}
 		}
+#endif
 
 		if (INFO_LEVEL_IS_UNIX(info_level)) {
 			/* Always do lstat for UNIX calls. */



More information about the samba-cvs mailing list