Просмотр исходного кода

[Net] ENet non-relaying server now process broadcasts.

Setting `server_relay = false` prevents the server from letting clients
communicate with each other, but without this fix, the server would also
ignore broadcast packets.
With this change, the server still does not relay messages to other
clients, but will correctly process broadcast messages (and "exclusive"
messages) as if they were directed to just the server.

(cherry picked from commit fc255bde298575ba368ded56f6ff5b4799a787c5)
Fabio Alessandrelli 4 лет назад
Родитель
Сommit
e05a7a4a4b
1 измененных файлов с 4 добавлено и 1 удалено
  1. 4 1
      modules/enet/networked_multiplayer_enet.cpp

+ 4 - 1
modules/enet/networked_multiplayer_enet.cpp

@@ -369,7 +369,10 @@ void NetworkedMultiplayerENet::poll() {
 							// To myself and only myself
 							// To myself and only myself
 							incoming_packets.push_back(packet);
 							incoming_packets.push_back(packet);
 						} else if (!server_relay) {
 						} else if (!server_relay) {
-							// No other destination is allowed when server is not relaying
+							// When relaying is disabled, other destinations will only be processed by the server.
+							if (target == 0 || target < -1) {
+								incoming_packets.push_back(packet);
+							}
 							continue;
 							continue;
 						} else if (target == 0) {
 						} else if (target == 0) {
 							// Re-send to everyone but sender :|
 							// Re-send to everyone but sender :|