Переглянути джерело

Merge pull request #55953 from Faless/net/3.x_webrtc_mp_connect_fix

Rémi Verschelde 3 роки тому
батько
коміт
cefba46d49
1 змінених файлів з 11 додано та 0 видалено
  1. 11 0
      modules/webrtc/webrtc_multiplayer.cpp

+ 11 - 0
modules/webrtc/webrtc_multiplayer.cpp

@@ -154,6 +154,10 @@ void WebRTCMultiplayer::_find_next_peer() {
 	}
 	// After last.
 	while (E) {
+		if (!E->get()->connected) {
+			E = E->next();
+			continue;
+		}
 		for (List<Ref<WebRTCDataChannel>>::Element *F = E->get()->channels.front(); F; F = F->next()) {
 			if (F->get()->get_available_packet_count()) {
 				next_packet_peer = E->key();
@@ -165,6 +169,10 @@ void WebRTCMultiplayer::_find_next_peer() {
 	E = peer_map.front();
 	// Before last
 	while (E) {
+		if (!E->get()->connected) {
+			E = E->next();
+			continue;
+		}
 		for (List<Ref<WebRTCDataChannel>>::Element *F = E->get()->channels.front(); F; F = F->next()) {
 			if (F->get()->get_available_packet_count()) {
 				next_packet_peer = E->key();
@@ -357,6 +365,9 @@ int WebRTCMultiplayer::get_available_packet_count() const {
 	}
 	int size = 0;
 	for (Map<int, Ref<ConnectedPeer>>::Element *E = peer_map.front(); E; E = E->next()) {
+		if (!E->get()->connected) {
+			continue;
+		}
 		for (List<Ref<WebRTCDataChannel>>::Element *F = E->get()->channels.front(); F; F = F->next()) {
 			size += F->get()->get_available_packet_count();
 		}