Bug fix in multicast changes.

This commit is contained in:
Adam Ierymenko 2013-08-21 14:51:32 -04:00
parent 2efc9b31bd
commit a0a9d52213

View file

@ -251,8 +251,9 @@ public:
if (peer) { if (peer) {
unsigned int chk = 0; unsigned int chk = 0;
while (chk < chosen) { while (chk < chosen) {
if (peers[chk++] == peer) if (peers[chk] == peer)
break; break;
++chk;
} }
if (chk == chosen) { /* not already picked */ if (chk == chosen) { /* not already picked */
peers[chosen++] = peer; peers[chosen++] = peer;
@ -262,7 +263,7 @@ public:
} }
} }
} }
return 0; return chosen;
} }
/** /**
@ -327,7 +328,9 @@ public:
/* Tack on a supernode if we have no next hops */ /* Tack on a supernode if we have no next hops */
if (!chosen) { if (!chosen) {
P peer = topology.getBestSupernode(); Address exclude[1];
exclude[0] = originalSubmitter; // if it came from a supernode, don't boomerang
P peer = topology.getBestSupernode(exclude,1,true);
if (peer) if (peer)
peers[chosen++] = peer; peers[chosen++] = peer;
} }