svn commit: samba r20700 - in branches/SAMBA_3_0/source/smbd: .

vlendec at samba.org vlendec at samba.org
Fri Jan 12 09:29:44 GMT 2007


Author: vlendec
Date: 2007-01-12 09:29:44 +0000 (Fri, 12 Jan 2007)
New Revision: 20700

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

Log:
In the main processing loop we select() on the fam socket. If it fires, it
might be possible that we hang in the receive_smb() although that socket is
not the reason for the select() to return.

This immediately reacts to the fam socket to become readable, and goes into
the select loop again. This fixes delays in files showing up in Windows.

Jeremy, James please review this and merge to 3_0_24 if appropriate.

Thanks,

Volker

Modified:
   branches/SAMBA_3_0/source/smbd/process.c


Changeset:
Modified: branches/SAMBA_3_0/source/smbd/process.c
===================================================================
--- branches/SAMBA_3_0/source/smbd/process.c	2007-01-12 08:49:09 UTC (rev 20699)
+++ branches/SAMBA_3_0/source/smbd/process.c	2007-01-12 09:29:44 UTC (rev 20700)
@@ -514,6 +514,19 @@
 		 */
 		goto again;
 	}
+
+	if ((change_notify_fd() >= 0) && FD_ISSET(change_notify_fd(), &fds)) {
+
+		process_pending_change_notify_queue((time_t)0);
+
+		/*
+		 * Same comment as for oplock processing applies here. We
+		 * might have done I/O on the client socket.
+		 */
+
+		goto again;
+	}
+
 	
 	return receive_smb(smbd_server_fd(), buffer, 0);
 }



More information about the samba-cvs mailing list