summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--modules/enet/networked_multiplayer_enet.cpp4
-rw-r--r--scene/main/scene_main_loop.cpp14
2 files changed, 14 insertions, 4 deletions
diff --git a/modules/enet/networked_multiplayer_enet.cpp b/modules/enet/networked_multiplayer_enet.cpp
index e9a3a46e75..1e52083b6b 100644
--- a/modules/enet/networked_multiplayer_enet.cpp
+++ b/modules/enet/networked_multiplayer_enet.cpp
@@ -285,8 +285,8 @@ void NetworkedMultiplayerENet::poll(){
incoming_packets.push_back(packet);
} else {
//to someone else, specifically
- ERR_CONTINUE(!peer_map.has(source));
- enet_peer_send(peer_map[source],0,packet.packet);
+ ERR_CONTINUE(!peer_map.has(target));
+ enet_peer_send(peer_map[target],0,packet.packet);
}
} else {
diff --git a/scene/main/scene_main_loop.cpp b/scene/main/scene_main_loop.cpp
index 53cc11359a..f025c5edfd 100644
--- a/scene/main/scene_main_loop.cpp
+++ b/scene/main/scene_main_loop.cpp
@@ -1760,6 +1760,17 @@ void SceneTree::_rpc(Node* p_from,int p_to,bool p_unreliable,bool p_set,const St
ERR_FAIL();
}
+ if (p_to!=0 && !connected_peers.has(ABS(p_to))) {
+ if (p_to==get_network_unique_id()) {
+ ERR_EXPLAIN("Attempt to remote call/set yourself! unique ID: "+itos(get_network_unique_id()));
+ } else {
+ ERR_EXPLAIN("Attempt to remote call unexisting ID: "+itos(p_to));
+
+ }
+
+ ERR_FAIL();
+ }
+
NodePath from_path = p_from->get_path();
ERR_FAIL_COND(from_path.is_empty());
@@ -1816,7 +1827,6 @@ void SceneTree::_rpc(Node* p_from,int p_to,bool p_unreliable,bool p_set,const St
}
has_all_peers=false;
- break;
}
}
@@ -1990,10 +2000,10 @@ void SceneTree::_network_process_packet(int p_from, const Array& p_packet) {
message.resize(2);
message[0]=NETWORK_COMMAND_CONFIRM_PATH;
message[1]=path;
-
network_peer->put_var(message);
} break;
case NETWORK_COMMAND_CONFIRM_PATH: {
+
ERR_FAIL_COND(p_packet.size()!=2);
NodePath path = p_packet[1];