Merge pull request #33069 from Faless/mp/fix_cache_cleanup

MultiplayerAPI cleanup cache when peer disconnects
This commit is contained in:
Rémi Verschelde 2019-10-25 21:16:13 +02:00 committed by GitHub
commit 81373b9633
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -602,7 +602,16 @@ void MultiplayerAPI::_add_peer(int p_id) {
void MultiplayerAPI::_del_peer(int p_id) {
connected_peers.erase(p_id);
path_get_cache.erase(p_id); // I no longer need your cache, sorry.
// Cleanup get cache.
path_get_cache.erase(p_id);
// Cleanup sent cache.
// Some refactoring is needed to make this faster and do paths GC.
List<NodePath> keys;
path_send_cache.get_key_list(&keys);
for (List<NodePath>::Element *E = keys.front(); E; E = E->next()) {
PathSentCache *psc = path_send_cache.getptr(E->get());
psc->confirmed_peers.erase(p_id);
}
emit_signal("network_peer_disconnected", p_id);
}