svn commit: samba r16417 - in branches/tmp/vl-messaging/source/lib: .

ab at samba.org ab at samba.org
Tue Jun 20 14:18:51 GMT 2006


Author: ab
Date: 2006-06-20 14:18:51 +0000 (Tue, 20 Jun 2006)
New Revision: 16417

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

Log:
Fix ping/pong responses as wrong destination was specified in the message. Patch from Aleksey Fedoseev.
Modified:
   branches/tmp/vl-messaging/source/lib/messages_socket.c
   branches/tmp/vl-messaging/source/lib/messages_stream.c


Changeset:
Modified: branches/tmp/vl-messaging/source/lib/messages_socket.c
===================================================================
--- branches/tmp/vl-messaging/source/lib/messages_socket.c	2006-06-20 12:30:50 UTC (rev 16416)
+++ branches/tmp/vl-messaging/source/lib/messages_socket.c	2006-06-20 14:18:51 UTC (rev 16417)
@@ -191,8 +191,9 @@
 							 unsigned int timeout)
 {
 	if ((enum messaging_type)lp_messaging_type() == MESSAGING_TYPE_STREAM) {
-		return message_send_pid_stream(pid, msg_type, buf, len,
-						duplicates_allowed, timeout);
+		return message_send_pid_stream(procid_self(), pid,
+									   msg_type, buf, len,
+									   duplicates_allowed, timeout);
 	} else {
 		struct message_list *li, *tmp;
 		uint8_t* buffer;

Modified: branches/tmp/vl-messaging/source/lib/messages_stream.c
===================================================================
--- branches/tmp/vl-messaging/source/lib/messages_stream.c	2006-06-20 12:30:50 UTC (rev 16416)
+++ branches/tmp/vl-messaging/source/lib/messages_stream.c	2006-06-20 14:18:51 UTC (rev 16417)
@@ -291,6 +291,7 @@
 ****************************************************************************/
 
 static BOOL message_send_pid_stream_internal(struct messaging_client *client,
+											 struct process_id from,
 											 int msg_type,
 											 const void *buf, size_t len,
 											 BOOL duplicates_allowed,
@@ -315,7 +316,7 @@
 	li->msg->len = len + sizeof(struct message_rec);
 	li->msg->msg_version = MESSAGE_VERSION;
 	li->msg->msg_type = msg_type;
-	li->msg->src = procid_self();
+	li->msg->src = from;
 	li->msg->dest = client->pid;
 	if (len > 0) {
 		memcpy(buffer + sizeof(struct message_rec), buf, len);
@@ -432,7 +433,8 @@
 
 	if(mtype == MESSAGING_TYPE_STREAM) {
 		/* Send HELLO message to the new client (local clients only) */
-		message_send_pid_stream_internal(result, MSG_HELLO, NULL, 0, False, 0);
+		message_send_pid_stream_internal(result, procid_self(),
+										 MSG_HELLO, NULL, 0, False, 0);
 	}
 
 	DEBUG(10, ("Connecting to client %s\n",
@@ -642,26 +644,27 @@
  Send a message to a particular pid.
 ****************************************************************************/
 
-BOOL message_send_pid_stream(struct process_id pid, int msg_type,
+BOOL message_send_pid_stream(struct process_id from, struct process_id to,
+			     int msg_type,
 			     const void *buf, size_t len,
 			     BOOL duplicates_allowed,
 			     unsigned int timeout)
 {
 	struct messaging_client *client;
 
-	client = find_client(&pid);
+	client = find_client(&to);
 
 	if(client == NULL) {
 		/* Try to connect  */
-		client = connect_client(&pid);
+		client = connect_client(&to);
 		if(client == NULL) {
 			DEBUG(5, ("Can't connect to client %s\n",
-					  procid_str_static(&pid)));
+					  procid_str_static(&to)));
 			return False;
 		}
 	}
 
-	return message_send_pid_stream_internal(client, msg_type,
+	return message_send_pid_stream_internal(client, from, msg_type,
 											buf, len,
 											duplicates_allowed, timeout);
 }
@@ -901,7 +904,7 @@
 		SAFE_FREE(sname);
 
 		/* one more copy - from main context to client's context */
-		message_send_pid_stream(msg->dest, msg->msg_type,
+		message_send_pid_stream(msg->src, msg->dest, msg->msg_type,
 								(uint8_t*)msg + sizeof(struct message_rec),
 								msg->len - sizeof(struct message_rec),
 								False,



More information about the samba-cvs mailing list