diff options
Diffstat (limited to 'scene')
-rw-r--r-- | scene/main/scene_main_loop.cpp | 14 |
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]; |