fix: recurriing network issue
All checks were successful
Queue Release Build / prepare (push) Successful in 18s
Deploy Web Apps / deploy (push) Successful in 6m32s
Queue Release Build / build-windows (push) Successful in 26m8s
Queue Release Build / build-linux (push) Successful in 40m18s
Queue Release Build / finalize (push) Successful in 42s

This commit is contained in:
2026-04-30 04:04:34 +02:00
parent b1fe286be8
commit a49e18b9f0
16 changed files with 522 additions and 17 deletions

View File

@@ -135,7 +135,13 @@ export class RoomSignalingConnection {
}
if (!isCompatible) {
if (candidate.isPrimary) {
// Warning: offline/unreachable endpoints also fail this check. Only
// version-incompatible primary endpoints should stop fallback; transient
// 521/522/network failures must continue to the next active endpoint.
const endpoint = this.serverDirectory.resolveRoomEndpoint(candidate.source);
const isEndpointIncompatible = endpoint?.status === 'incompatible';
if (candidate.isPrimary && isEndpointIncompatible) {
if (shouldShowCompatibilityError) {
this.store.dispatch(
RoomsActions.setSignalServerCompatibilityError({ message: CLIENT_UPDATE_REQUIRED_MESSAGE })
@@ -297,6 +303,10 @@ export class RoomSignalingConnection {
if (!this.webrtc.hasJoinedServer(room.id)) {
const selector = this.resolveRoomSignalSelector(primarySource, resolvedRoom.name);
// Warning: getServer returns null for both SERVER_NOT_FOUND and transient
// endpoint failures. Always search active endpoints before deciding the
// saved room source is stale, otherwise a Cloudflare/origin outage pins
// reconnects to the dead endpoint.
const authoritativeServer = (
selector
? await firstValueFrom(this.serverDirectory.getServer(room.id, selector))