Kaynağa Gözat

Merge pull request #31483 from Faless/ws/fix_double_relay

Fix WebSocketServer relaying message twice.
Rémi Verschelde 6 yıl önce
ebeveyn
işleme
f2c9252b6e

+ 2 - 8
modules/websocket/websocket_multiplayer_peer.cpp

@@ -299,8 +299,6 @@ void WebSocketMultiplayerPeer::_process_multiplayer(Ref<WebSocketPeer> p_peer, u
 		ERR_FAIL_COND(type != SYS_NONE); // Only server sends sys messages
 		ERR_FAIL_COND(from != p_peer_id); // Someone is cheating
 
-		_server_relay(from, to, in_buffer, size); // Relay if needed
-
 		if (to == 1) { // This is for the server
 
 			_store_pkt(from, to, in_buffer, data_size);
@@ -315,13 +313,9 @@ void WebSocketMultiplayerPeer::_process_multiplayer(Ref<WebSocketPeer> p_peer, u
 			// All but one, for us if not excluded
 			if (_peer_id != -(int32_t)p_peer_id)
 				_store_pkt(from, to, in_buffer, data_size);
-
-		} else {
-
-			// Send to specific peer
-			ERR_FAIL_COND(!_peer_map.has(to));
-			get_peer(to)->put_packet(in_buffer, size);
 		}
+		// Relay if needed (i.e. "to" includes a peer that is not the server)
+		_server_relay(from, to, in_buffer, size);
 
 	} else {