Jon,
When testing multicast and having 2 processes on the same node
running my membership code, one process was not getting messages.
I found another place where getting the number of bytes sent was
being treated as an error.
Here's the patch to fix nameseq_deliver():
Index: recvbcast.c
===================================================================
RCS file: /cvsroot/tipc/source/unstable/net/tipc/recvbcast.c,v
retrieving revision 1.18
diff -u -b -B -p -u -r1.18 recvbcast.c
--- recvbcast.c 5 May 2004 19:09:03 -0000 1.18
+++ recvbcast.c 25 May 2004 20:30:53 -0000
@@ -446,6 +446,7 @@ nameseq_deliver(struct sk_buff *buf, str
struct list_head *pos;
struct mc_identity *mid;
int res = TIPC_OK;
+ int sz = msg_data_sz(buf_msg(buf));
dbg("nameseq_deliver\n");
list_for_each(pos, mc_head) {
@@ -458,7 +459,7 @@ nameseq_deliver(struct sk_buff *buf, str
msg_set_destport(buf_msg(copymsg), mid->port);
if (port) {
res = port_recv_msg(copymsg);
- if (res)
+ if (res != sz)
break;
}
}
It also looks like blink_send_buf_fast() should be returning the
number of bytes sent. It sometimes does and sometimes returns TIPC_OK.
Mark and I are still looking at it.
Daniel
|