summaryrefslogtreecommitdiff
path: root/scene
diff options
context:
space:
mode:
Diffstat (limited to 'scene')
-rw-r--r--scene/main/scene_main_loop.cpp14
1 files changed, 12 insertions, 2 deletions
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];