Unable to connect

For some reason, I am unable to join most lobbies. Occasionally I can connect to a lobby with 1 player, but if there's more than 1 player it gets stuck on the connecting screen.

I've tried using a VPN from several locations, as well as reinstalling the client, but has made no difference.

Any suggestions?

I've also restarted the client dozens of times, restarted my pc, and restarted the router, nothing is working.

Thought it was an issue with IPv6 so went to disable it, but it was already disabled. I enabled it, and still can't connect to lobbies.

Occasionally i get the following error trying to join a lobby:

org.springframework.context.NoSuchMessageException: No message found under code 'games.couldNotStart' for locale 'en_US'.
at org.springframework.context.support.AbstractMessageSource.getMessage(AbstractMessageSource.java:161)
at com.faforever.client.i18n.I18n.get(I18n.java:102)
at com.faforever.client.i18n.I18n.get(I18n.java:94)
at com.faforever.client.notification.NotificationService.addImmediateErrorNotification(NotificationService.java:120)
at com.faforever.client.game.GameService.lambda$startGame$38(GameService.java:627)
at java.base/java.util.concurrent.CompletableFuture.uniExceptionally(CompletableFuture.java:990)
at java.base/java.util.concurrent.CompletableFuture$UniExceptionally.tryFire(CompletableFuture.java:974)
at java.base/java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:510)
at java.base/java.util.concurrent.CompletableFuture.completeExceptionally(CompletableFuture.java:2162)
at reactor.core.publisher.MonoToCompletableFuture.onError(MonoToCompletableFuture.java:77)
at reactor.core.publisher.MonoCollectList$MonoCollectListSubscriber.onError(MonoCollectList.java:114)
at reactor.core.publisher.Operators$MultiSubscriptionSubscriber.onError(Operators.java:2063)
at reactor.core.publisher.Operators$MultiSubscriptionSubscriber.onError(Operators.java:2063)
at reactor.core.publisher.FluxFilterFuseable$FilterFuseableSubscriber.onError(FluxFilterFuseable.java:162)
at reactor.core.publisher.FluxPeekFuseable$PeekFuseableConditionalSubscriber.onError(FluxPeekFuseable.java:553)
at reactor.core.publisher.FluxReplay$UnboundedReplayBuffer.replayNormal(FluxReplay.java:599)
at reactor.core.publisher.FluxReplay$UnboundedReplayBuffer.replay(FluxReplay.java:709)
at reactor.core.publisher.FluxReplay$ReplaySubscriber.onError(FluxReplay.java:1360)
at reactor.core.publisher.SerializedSubscriber.onError(SerializedSubscriber.java:124)
at reactor.core.publisher.FluxRetryWhen$RetryWhenMainSubscriber.whenError(FluxRetryWhen.java:225)
at reactor.core.publisher.FluxRetryWhen$RetryWhenOtherSubscriber.onError(FluxRetryWhen.java:274)
at reactor.core.publisher.FluxConcatMap$ConcatMapImmediate.drain(FluxConcatMap.java:415)
at reactor.core.publisher.FluxConcatMap$ConcatMapImmediate.onNext(FluxConcatMap.java:251)
at reactor.core.publisher.EmitterProcessor.drain(EmitterProcessor.java:537)
at reactor.core.publisher.EmitterProcessor.tryEmitNext(EmitterProcessor.java:343)
at reactor.core.publisher.SinkManySerialized.tryEmitNext(SinkManySerialized.java:100)
at reactor.core.publisher.InternalManySink.emitNext(InternalManySink.java:27)
at reactor.core.publisher.FluxRetryWhen$RetryWhenMainSubscriber.onError(FluxRetryWhen.java:190)
at reactor.core.publisher.MonoFlatMapMany$FlatMapManyMain.onError(MonoFlatMapMany.java:204)
at reactor.core.publisher.Operators$MultiSubscriptionSubscriber.onError(Operators.java:2063)
at reactor.core.publisher.FluxOnAssembly$OnAssemblySubscriber.onError(FluxOnAssembly.java:544)
at reactor.core.publisher.MonoFlatMap$FlatMapMain.secondError(MonoFlatMap.java:192)
at reactor.core.publisher.MonoFlatMap$FlatMapInner.onError(MonoFlatMap.java:259)
at reactor.core.publisher.MonoFlatMap$FlatMapMain.secondError(MonoFlatMap.java:192)
at reactor.core.publisher.MonoFlatMap$FlatMapInner.onError(MonoFlatMap.java:259)
at reactor.core.publisher.MonoFlatMap$FlatMapMain.secondError(MonoFlatMap.java:192)
at reactor.core.publisher.MonoFlatMap$FlatMapInner.onError(MonoFlatMap.java:259)
at reactor.core.publisher.FluxMap$MapSubscriber.onError(FluxMap.java:134)
at reactor.core.publisher.FluxOnErrorResume$ResumeSubscriber.onError(FluxOnErrorResume.java:106)
at reactor.core.publisher.Operators.error(Operators.java:198)
at reactor.core.publisher.MonoErrorSupplied.subscribe(MonoErrorSupplied.java:56)
at reactor.core.publisher.Mono.subscribe(Mono.java:4397)
at reactor.core.publisher.FluxOnErrorResume$ResumeSubscriber.onError(FluxOnErrorResume.java:103)
at reactor.core.publisher.FluxPeek$PeekSubscriber.onError(FluxPeek.java:222)
at reactor.core.publisher.FluxPeek$PeekSubscriber.onError(FluxPeek.java:222)
at reactor.core.publisher.FluxPeek$PeekSubscriber.onError(FluxPeek.java:222)
at reactor.core.publisher.MonoNext$NextSubscriber.onError(MonoNext.java:93)
at reactor.core.publisher.MonoFlatMapMany$FlatMapManyMain.onError(MonoFlatMapMany.java:204)
at reactor.core.publisher.SerializedSubscriber.onError(SerializedSubscriber.java:124)
at reactor.core.publisher.FluxRetryWhen$RetryWhenMainSubscriber.whenError(FluxRetryWhen.java:225)
at reactor.core.publisher.FluxRetryWhen$RetryWhenOtherSubscriber.onError(FluxRetryWhen.java:274)
at reactor.core.publisher.FluxConcatMap$ConcatMapImmediate.drain(FluxConcatMap.java:415)
at reactor.core.publisher.FluxConcatMap$ConcatMapImmediate.onNext(FluxConcatMap.java:251)
at reactor.core.publisher.EmitterProcessor.drain(EmitterProcessor.java:537)
at reactor.core.publisher.EmitterProcessor.tryEmitNext(EmitterProcessor.java:343)
at reactor.core.publisher.SinkManySerialized.tryEmitNext(SinkManySerialized.java:100)
at reactor.core.publisher.InternalManySink.emitNext(InternalManySink.java:27)
at reactor.core.publisher.FluxRetryWhen$RetryWhenMainSubscriber.onError(FluxRetryWhen.java:190)
at reactor.core.publisher.MonoCreate$DefaultMonoSink.error(MonoCreate.java:201)
at reactor.netty.http.client.HttpClientConnect$MonoHttpConnect$ClientTransportSubscriber.onError(HttpClientConnect.java:308)
at reactor.core.publisher.MonoCreate$DefaultMonoSink.error(MonoCreate.java:201)
at reactor.netty.resources.NewConnectionProvider$DisposableConnect.onError(NewConnectionProvider.java:140)
at reactor.core.publisher.MonoFlatMap$FlatMapMain.secondError(MonoFlatMap.java:192)
at reactor.core.publisher.MonoFlatMap$FlatMapInner.onError(MonoFlatMap.java:259)
at reactor.core.publisher.FluxOnErrorResume$ResumeSubscriber.onError(FluxOnErrorResume.java:106)
at reactor.core.publisher.Operators.error(Operators.java:198)
at reactor.core.publisher.MonoError.subscribe(MonoError.java:53)
at reactor.core.publisher.Mono.subscribe(Mono.java:4397)
at reactor.core.publisher.FluxOnErrorResume$ResumeSubscriber.onError(FluxOnErrorResume.java:103)
at reactor.netty.transport.TransportConnector$MonoChannelPromise.tryFailure(TransportConnector.java:534)
at reactor.netty.transport.TransportConnector$MonoChannelPromise.setFailure(TransportConnector.java:488)
at reactor.netty.transport.TransportConnector.lambda$doConnect$7(TransportConnector.java:223)
at io.netty.util.concurrent.DefaultPromise.notifyListener0(DefaultPromise.java:578)
at io.netty.util.concurrent.DefaultPromise.notifyListeners0(DefaultPromise.java:571)
at io.netty.util.concurrent.DefaultPromise.notifyListenersNow(DefaultPromise.java:550)
at io.netty.util.concurrent.DefaultPromise.notifyListeners(DefaultPromise.java:491)
at io.netty.util.concurrent.DefaultPromise.setValue0(DefaultPromise.java:616)
at io.netty.util.concurrent.DefaultPromise.setFailure0(DefaultPromise.java:609)
at io.netty.util.concurrent.DefaultPromise.tryFailure(DefaultPromise.java:117)
at io.netty.channel.nio.AbstractNioChannel$AbstractNioUnsafe.fulfillConnectPromise(AbstractNioChannel.java:321)
at io.netty.channel.nio.AbstractNioChannel$AbstractNioUnsafe.finishConnect(AbstractNioChannel.java:337)
at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:710)
at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:658)
at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:584)
at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:496)
at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997)
at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
at java.base/java.lang.Thread.run(Thread.java:833)

I downloaded the python client and this works. I'm able to join lobbies and connect to everyone just fine. Very strange.

From the ice-adapter log of a remote peer:

With Downlord's client:
{"foundation":"1","protocol":"udp","priority":2130706431,"ip":"192.168.XXX.XXX","port":6911,"type":"HOST_CANDIDATE","generation":0,"id":"1","relPort":0},
{"foundation":"2","protocol":"udp","priority":2130706431,"ip":"2001:0:14be:4c8:XXXX:XXXX:XXXX:XXXX","port":6911,"type":"HOST_CANDIDATE","generation":0,"id":"3","relPort":0},
{"foundation":"3","protocol":"udp","priority":2113937151,"ip":"fe80:0:0:0:XXXX:XXXX:XXXX:XXXX","port":6911,"type":"HOST_CANDIDATE","generation":0,"id":"4","relPort":0}

With Python client:
{"foundation":"1","protocol":"udp","priority":2130706431,"ip":"192.168.XXX.XXX","port":6466,"type":"HOST_CANDIDATE","generation":0,"id":"25","relPort":0},
{"foundation":"2","protocol":"udp","priority":2130706431,"ip":"fe80:0:0:0:XXXX:XXXX:XXXX:XXXX","port":6466,"type":"HOST_CANDIDATE","generation":0,"id":"26","relPort":0},
{"foundation":"3","protocol":"udp","priority":2113932031,"ip":"10.XXX.XXX.XXX","port":6466,"type":"HOST_CANDIDATE","generation":0,"id":"27","relPort":0},
{"foundation":"4","protocol":"udp","priority":1677724415,"ip":"149.XXX.XXX.XXX","port":27628,"type":"SERVER_REFLEXIVE_CANDIDATE","generation":0,"id":"28","relAddr":"10.XXX.XXX.XXX","relPort":6466},
{"foundation":"5","protocol":"udp","priority":2815,"ip":"116.XXX.XXX.XXX","port":12105,"type":"RELAYED_CANDIDATE","generation":0,"id":"29","relAddr":"149.XXX.XXX.XXX","relPort":27628}

It seems that the missing "SERVER_REFLEXIVE_CANDIDATE" is the issue. Since that's a server-side addition, I wonder how this can differ between clients.

Are you guys from the UK by chance? It seems UK ISPs have been having issues connecting to FAF the last week or so.

I'm from the UK yes.

But a VPN would have solved it in the first place - Have you not tried it from another country?

Edit: And you need to hit your Provider, so they can fix it.

I've tried a VPN from the Netherlands, Japan, and the USA, but none of that works.

Everything else regarding my internet is smooth and running normally. The only issue I have with my internet supposedly, is its ability to connect to players in the latest client.

@magge Did you not read all my comments? I have tried a VPN from several locations.
Also, hitting up my provider seems pretty pointless. As I say, my internet is fine, I can even play on the python client. There is something up with the new client, somehow, for some reason. And it seems to have happened suddenly for no apparent reason.