Fixed message relaying between multiple unconnected in server rack in internal mode. Again.

This commit is contained in:
Florian Nücke 2014-12-07 16:15:57 +01:00
parent b324dc300b
commit a1f11a1d01

View File

@ -111,7 +111,9 @@ class Server(val rack: tileentity.ServerRack, val slot: Int) extends Environment
// Ensure the message originated in our local network, to avoid infinite // Ensure the message originated in our local network, to avoid infinite
// recursion if two unconnected servers are in one server rack. // recursion if two unconnected servers are in one server rack.
if (rack.internalSwitch && message.name == "network.message" && if (rack.internalSwitch && message.name == "network.message" &&
rack.sides(this.slot) == ForgeDirection.UNKNOWN && node.network.node(message.source.address) != null) { rack.sides(this.slot) == ForgeDirection.UNKNOWN && // Only if we're in internal mode.
message.source != machine.node && // In this case it was relayed from another internal machine.
node.network.node(message.source.address) != null) {
for (slot <- 0 until rack.servers.length) { for (slot <- 0 until rack.servers.length) {
rack.servers(slot) match { rack.servers(slot) match {
case Some(server) if server != this => server.machine.node.sendToNeighbors(message.name, message.data: _*) case Some(server) if server != this => server.machine.node.sendToNeighbors(message.name, message.data: _*)