From: Daniel M. <da...@os...> - 2004-05-25 21:27:56
|
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 |