svn commit: samba r10650 - in branches/tmp/vl-cluster/source: lib nmbd torture utils

vlendec at samba.org vlendec at samba.org
Fri Sep 30 11:56:41 GMT 2005


Author: vlendec
Date: 2005-09-30 11:56:39 +0000 (Fri, 30 Sep 2005)
New Revision: 10650

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

Log:
Send non-local messages via the dispatcher, allow message_select_dispatch wait
for a timeout

Volker

Modified:
   branches/tmp/vl-cluster/source/lib/messages.c
   branches/tmp/vl-cluster/source/nmbd/nmbd.c
   branches/tmp/vl-cluster/source/torture/msgtest.c
   branches/tmp/vl-cluster/source/utils/smbcontrol.c


Changeset:
Modified: branches/tmp/vl-cluster/source/lib/messages.c
===================================================================
--- branches/tmp/vl-cluster/source/lib/messages.c	2005-09-30 11:18:29 UTC (rev 10649)
+++ branches/tmp/vl-cluster/source/lib/messages.c	2005-09-30 11:56:39 UTC (rev 10650)
@@ -315,6 +315,10 @@
 		memcpy(packet.data + sizeof(struct message_rec), buf, len);
 	}
 
+	if (!procid_is_local(&hdr->dest)) {
+		goto via_stream;
+	}
+
 	ZERO_STRUCT(sunaddr);
 	sunaddr.sun_family = AF_UNIX;
 	strncpy(sunaddr.sun_path, message_path(&pid),
@@ -350,6 +354,7 @@
 			   "dispatcher in blocking mode\n"));
 	}
 
+ via_stream:
 	if ((stream_fd < 0) && !init_stream_socket()) {
 		DEBUG(5, ("No stream socket\n"));
 		goto done;
@@ -618,15 +623,14 @@
 	return result;
 }
 
-void message_select_dispatch(void)
+void message_select_dispatch(struct timeval *tv)
 {
 	fd_set rfds;
 	int maxfd = 0;
-	struct timeval tv = timeval_zero();
 
 	FD_ZERO(&rfds);
 	message_select_setup(&maxfd, &rfds);
-	if (sys_select(maxfd+1, &rfds, NULL, NULL, &tv) > 0) {
+	if (sys_select(maxfd+1, &rfds, NULL, NULL, tv) > 0) {
 		message_dispatch(&rfds);
 	}
 }

Modified: branches/tmp/vl-cluster/source/nmbd/nmbd.c
===================================================================
--- branches/tmp/vl-cluster/source/nmbd/nmbd.c	2005-09-30 11:18:29 UTC (rev 10649)
+++ branches/tmp/vl-cluster/source/nmbd/nmbd.c	2005-09-30 11:56:39 UTC (rev 10650)
@@ -392,7 +392,10 @@
 
 		/* Check for internal messages */
 
-		message_select_dispatch();
+		{
+			struct timeval null = timeval_zero();
+			message_select_dispatch(&null);
+		}
 
 		/*
 		 * Check all broadcast subnets to see if

Modified: branches/tmp/vl-cluster/source/torture/msgtest.c
===================================================================
--- branches/tmp/vl-cluster/source/torture/msgtest.c	2005-09-30 11:18:29 UTC (rev 10649)
+++ branches/tmp/vl-cluster/source/torture/msgtest.c	2005-09-30 11:56:39 UTC (rev 10650)
@@ -35,7 +35,7 @@
 
  int main(int argc, char *argv[])
 {
-	pid_t pid;
+	struct process_id pid;
 	int i, n;
 	char *buf;
 
@@ -50,9 +50,9 @@
 	}
 
 	if (strcmp(argv[1], "self") == 0) {
-		pid = getpid();
+		pid = procid_self();
 	} else {
-		pid = atoi(argv[1]);
+		pid = interpret_pid(argv[1]);
 	}
 	n = atoi(argv[2]);
 
@@ -70,9 +70,11 @@
 	for (i=0;i<n;i++) {
 		fd_set rfds;
 		int maxfd;
+		size_t size = 1024*512;
 		FD_ZERO(&rfds);
-		message_send_pid(pid_to_procid(pid), MSG_PING, NULL, 0,
-				 True);
+		buf=SMB_MALLOC(size);
+		memset(buf, 0, size);
+		message_send_pid(pid, MSG_PING, buf, size, True);
 		message_select_setup(&maxfd, &rfds);
 		if (select(maxfd+1, &rfds, NULL, NULL, NULL) <= 0)
 			break;
@@ -80,13 +82,8 @@
 	}
 
 	while (pong_count < n) {
-		fd_set rfds;
-		int maxfd;
-		FD_ZERO(&rfds);
-		message_select_setup(&maxfd, &rfds);
-		if (select(maxfd+1, &rfds, NULL, NULL, NULL) <= 0)
-			break;
-		message_dispatch(&rfds);
+		struct timeval tv = timeval_set(5, 0);
+		message_select_dispatch(&tv);
 	}		
 	DEBUG(0, ("expected %d, got back %d\n", n, pong_count));
 

Modified: branches/tmp/vl-cluster/source/utils/smbcontrol.c
===================================================================
--- branches/tmp/vl-cluster/source/utils/smbcontrol.c	2005-09-30 11:18:29 UTC (rev 10649)
+++ branches/tmp/vl-cluster/source/utils/smbcontrol.c	2005-09-30 11:56:39 UTC (rev 10650)
@@ -76,10 +76,11 @@
            busy-wait here as there is no nicer way to do it. */
 
 	do {
-		message_select_dispatch();
-		if (num_replies > 0 && !multiple_replies)
-			break;
-		sleep(1);
+		struct timeval tmo;
+		tmo = timeval_set(timeout - (time(NULL) - start_time), 0);
+		message_select_dispatch(&tmo);
+                if (num_replies > 0 && !multiple_replies)
+                        break;
 	} while (timeout - (time(NULL) - start_time) > 0);
 }
 



More information about the samba-cvs mailing list