Compare commits

..

3 Commits

Author SHA1 Message Date
Vudjun
a6b7bda7e1 Merge bcbe589964 into 91f73a4891 2025-02-13 19:54:38 -06:00
Vudjun
bcbe589964 Decrease timeout on uPNP to avoid timeout issue on smash bros and change debug statements to Info 2025-02-08 23:14:29 +00:00
Vudjun
d406c42e15 Make the uPNP device search more reliable 2025-02-08 18:28:41 +00:00
3 changed files with 88 additions and 65 deletions

View File

@@ -2988,8 +2988,8 @@
010015D003EE4000,"The Jackbox Party Pack 2",online-working,playable,2022-08-22 18:23:40
0100CC80013D6000,"The Jackbox Party Pack 3",slow;online-working,playable,2022-08-22 18:41:06
0100E1F003EE8000,"The Jackbox Party Pack 4",online-working,playable,2022-08-22 18:56:34
01006fe0096ac000,"The Jackbox Party Pack 5",slow;online-working,ingame,2025-02-14 05:32:00
01005a400db52000,"The Jackbox Party Pack 6",slow;online-working,ingame,2025-02-14 05:26:00
01006fe0096ac000,"The Jackbox Party Pack 5",ldn-untested,boots,2025-02-03 22:32:00
01005a400db52000,"The Jackbox Party Pack 6",ldn-untested,boots,2025-02-03 22:32:00
010052C00B184000,"The Journey Down: Chapter One",nvdec,playable,2021-02-24 13:32:41
01006BC00B188000,"The Journey Down: Chapter Three",nvdec,playable,2021-02-24 13:45:27
01009AB00B186000,"The Journey Down: Chapter Two",nvdec,playable,2021-02-24 13:32:13
1 title_id game_name labels status last_updated
2988 010015D003EE4000 The Jackbox Party Pack 2 online-working playable 2022-08-22 18:23:40
2989 0100CC80013D6000 The Jackbox Party Pack 3 slow;online-working playable 2022-08-22 18:41:06
2990 0100E1F003EE8000 The Jackbox Party Pack 4 online-working playable 2022-08-22 18:56:34
2991 01006fe0096ac000 The Jackbox Party Pack 5 slow;online-working ldn-untested ingame boots 2025-02-14 05:32:00 2025-02-03 22:32:00
2992 01005a400db52000 The Jackbox Party Pack 6 slow;online-working ldn-untested ingame boots 2025-02-14 05:26:00 2025-02-03 22:32:00
2993 010052C00B184000 The Journey Down: Chapter One nvdec playable 2021-02-24 13:32:41
2994 01006BC00B188000 The Journey Down: Chapter Three nvdec playable 2021-02-24 13:45:27
2995 01009AB00B186000 The Journey Down: Chapter Two nvdec playable 2021-02-24 13:32:13

View File

@@ -110,24 +110,10 @@ namespace Ryujinx.HLE.HOS.Services.Ldn.UserServiceCreator.LdnRyu.Proxy
_broadcastAddress = config.ProxyIp | (~config.ProxySubnetMask);
}
public async Task<ushort> NatPunch()
private async Task<ushort> NatPunchForDevice(NatDevice device)
{
NatDiscoverer discoverer = new();
CancellationTokenSource cts = new(5000);
NatDevice device;
try
{
device = await discoverer.DiscoverDeviceAsync(PortMapper.Upnp, cts);
}
catch (NatDeviceNotFoundException)
{
return 0;
}
Logger.Info?.PrintMsg(LogClass.ServiceLdn, $"Attempting to map port using {device.ToString()}");
_publicPort = PublicPortBase;
for (int i = 0; i < PublicPortRange; i++)
{
try
@@ -138,12 +124,14 @@ namespace Ryujinx.HLE.HOS.Services.Ldn.UserServiceCreator.LdnRyu.Proxy
break;
}
catch (MappingException)
catch (MappingException ex)
{
Logger.Info?.PrintMsg(LogClass.ServiceLdn, $"Failed to map port {_publicPort}: {ex.Message}");
_publicPort++;
}
catch (Exception)
catch (Exception ex)
{
Logger.Info?.PrintMsg(LogClass.ServiceLdn, $"Failed to map port {_publicPort}: {ex.GetType().Name}: {ex.Message}");
return 0;
}
@@ -155,17 +143,52 @@ namespace Ryujinx.HLE.HOS.Services.Ldn.UserServiceCreator.LdnRyu.Proxy
if (_publicPort != 0)
{
_natDevice = device;
_ = Executor.ExecuteAfterDelayAsync(
PortLeaseRenew.Seconds(),
PortLeaseRenew.Seconds(),
_disposedCancellation.Token,
RefreshLease);
}
_natDevice = device;
return _publicPort;
}
public async Task<ushort> NatPunch()
{
NatDiscoverer discoverer = new();
CancellationTokenSource cts = new(500);
NatDevice[] devices;
try
{
devices = (await discoverer.DiscoverDevicesAsync(PortMapper.Upnp, cts)).ToArray();
}
catch (Exception ex)
{
Logger.Error?.PrintMsg(LogClass.ServiceLdn, $"Failed to discover UPnP devices: {ex.Message}");
return 0;
}
if (devices.Length == 0)
{
Logger.Error?.PrintMsg(LogClass.ServiceLdn, "No UPnP devices found.");
return 0;
}
foreach (var device in devices)
{
ushort port = await NatPunchForDevice(device);
if (port != 0)
{
return port;
}
}
Logger.Info?.PrintMsg(LogClass.ServiceLdn, $"Failed to map port using any device");
_publicPort = 0;
return 0;
}
// Proxy handlers
private void RouteMessage(P2pProxySession sender, ref ProxyInfo info, Action<P2pProxySession> action)

View File

@@ -585,7 +585,7 @@
"it_IT": "",
"ja_JP": "",
"ko_KR": "UI를 숨긴 상태에서 게임 시작",
"no_NO": "Start Spillet med UI Gjemt",
"no_NO": "",
"pl_PL": "",
"pt_BR": "Iniciar jogos ocultando a interface",
"ru_RU": "",
@@ -1535,7 +1535,7 @@
"it_IT": "",
"ja_JP": "",
"ko_KR": "",
"no_NO": "Utviklet av {0}",
"no_NO": "",
"pl_PL": "",
"pt_BR": "Desenvolvido por {0}",
"ru_RU": "",
@@ -1835,7 +1835,7 @@
"it_IT": "",
"ja_JP": "",
"ko_KR": "",
"no_NO": "Kompatibilitet",
"no_NO": "",
"pl_PL": "",
"pt_BR": "Compatibilidade:",
"ru_RU": "",
@@ -1860,7 +1860,7 @@
"it_IT": "",
"ja_JP": "",
"ko_KR": "",
"no_NO": "Tittel ID:",
"no_NO": "",
"pl_PL": "",
"pt_BR": "ID do título:",
"ru_RU": "",
@@ -1885,7 +1885,7 @@
"it_IT": "",
"ja_JP": "",
"ko_KR": "",
"no_NO": "Spill som Arrangeres: {0}",
"no_NO": "",
"pl_PL": "",
"pt_BR": "Jogos hospedados: {0}",
"ru_RU": "",
@@ -1910,7 +1910,7 @@
"it_IT": "",
"ja_JP": "",
"ko_KR": "",
"no_NO": "Online-spillere: {0}",
"no_NO": "",
"pl_PL": "",
"pt_BR": "Jogadores Online: {0}",
"ru_RU": "",
@@ -2260,7 +2260,7 @@
"it_IT": "",
"ja_JP": "",
"ko_KR": "PPTC 캐시 제거",
"no_NO": "Tøm PPTC-bufferen",
"no_NO": "",
"pl_PL": "",
"pt_BR": "Limpar cache PPTC",
"ru_RU": "",
@@ -2285,7 +2285,7 @@
"it_IT": "",
"ja_JP": "",
"ko_KR": "앱의 모든 PPTC 캐시 파일 삭제",
"no_NO": "Sletter alle PPTC-cache-filer for applikasjonen",
"no_NO": "",
"pl_PL": "",
"pt_BR": "Apagar os arquivos de cache PPTC do aplicativo",
"ru_RU": "",
@@ -2760,7 +2760,7 @@
"it_IT": "",
"ja_JP": "",
"ko_KR": "호환성 항목 표시",
"no_NO": "Vis kompatibilitetsoppføring",
"no_NO": "",
"pl_PL": "",
"pt_BR": "Mostrar entrada de compatibilidade",
"ru_RU": "",
@@ -2785,7 +2785,7 @@
"it_IT": "",
"ja_JP": "",
"ko_KR": "일반적으로 도움말 메뉴를 통해 접근할 수 있는 호환성 목록에 선택한 게임을 표시합니다.",
"no_NO": "Vis det valgte spillet i kompatibilitetslisten, som du vanligvis får tilgang til via Hjelp-menyen.",
"no_NO": "",
"pl_PL": "",
"pt_BR": "Exibe o jogo selecionado na Lista de Compatibilidade, que normalmente pode ser acessada pelo menu Ajuda.",
"ru_RU": "",
@@ -2810,7 +2810,7 @@
"it_IT": "",
"ja_JP": "",
"ko_KR": "게임 통계 표시",
"no_NO": "Vis Spill Info",
"no_NO": "",
"pl_PL": "",
"pt_BR": "Mostrar informações do jogo",
"ru_RU": "",
@@ -2835,7 +2835,7 @@
"it_IT": "",
"ja_JP": "",
"ko_KR": "그리드 보기 레이아웃에서 누락된 현재 선택된 게임에 대한 다양한 정보를 표시합니다.",
"no_NO": "Vis statistikk og detaljer om det valgte spillet.",
"no_NO": "",
"pl_PL": "",
"pt_BR": "Mostrar estatísticas e detalhes sobre o jogo selecionado no momento.",
"ru_RU": "",
@@ -3360,7 +3360,7 @@
"it_IT": "",
"ja_JP": "",
"ko_KR": "",
"no_NO": "Se etter Oppdateringer:",
"no_NO": "",
"pl_PL": "",
"pt_BR": "Verificar atualizações:",
"ru_RU": "",
@@ -3385,7 +3385,7 @@
"it_IT": "",
"ja_JP": "",
"ko_KR": "",
"no_NO": "Av",
"no_NO": "",
"pl_PL": "",
"pt_BR": "Desligado",
"ru_RU": "",
@@ -3410,7 +3410,7 @@
"it_IT": "",
"ja_JP": "",
"ko_KR": "",
"no_NO": "Spør",
"no_NO": "",
"pl_PL": "",
"pt_BR": "",
"ru_RU": "",
@@ -3435,7 +3435,7 @@
"it_IT": "",
"ja_JP": "",
"ko_KR": "",
"no_NO": "Bakgrunn",
"no_NO": "",
"pl_PL": "",
"pt_BR": "Fundo",
"ru_RU": "",
@@ -3460,7 +3460,7 @@
"it_IT": "",
"ja_JP": "",
"ko_KR": "",
"no_NO": "På Emulator Fokus Tapt:",
"no_NO": "",
"pl_PL": "",
"pt_BR": "Ao perder o Foco do emulador:",
"ru_RU": "",
@@ -3485,7 +3485,7 @@
"it_IT": "",
"ja_JP": "",
"ko_KR": "",
"no_NO": "Gjør Ingenting",
"no_NO": "",
"pl_PL": "",
"pt_BR": "Não fazer nada",
"ru_RU": "",
@@ -3510,7 +3510,7 @@
"it_IT": "",
"ja_JP": "",
"ko_KR": "",
"no_NO": "Blokkinngang",
"no_NO": "",
"pl_PL": "",
"pt_BR": "Bloquear entrada",
"ru_RU": "",
@@ -3535,7 +3535,7 @@
"it_IT": "",
"ja_JP": "",
"ko_KR": "",
"no_NO": "Demp Lyd",
"no_NO": "",
"pl_PL": "",
"pt_BR": "Ficar mudo",
"ru_RU": "",
@@ -3560,7 +3560,7 @@
"it_IT": "",
"ja_JP": "",
"ko_KR": "",
"no_NO": "Blokker Inputs og demp Volumet",
"no_NO": "",
"pl_PL": "",
"pt_BR": "Bloquear entrada & Ficar mudo",
"ru_RU": "",
@@ -3585,7 +3585,7 @@
"it_IT": "",
"ja_JP": "",
"ko_KR": "",
"no_NO": "Pause Emulatoren",
"no_NO": "",
"pl_PL": "",
"pt_BR": "Pausar a emulação",
"ru_RU": "",
@@ -4635,7 +4635,7 @@
"it_IT": "",
"ja_JP": "",
"ko_KR": "스웨덴어",
"no_NO": "Svensk",
"no_NO": "",
"pl_PL": "",
"pt_BR": "",
"ru_RU": "",
@@ -4735,7 +4735,7 @@
"it_IT": "",
"ja_JP": "",
"ko_KR": "매치 시스템 시간",
"no_NO": "Match systemtid",
"no_NO": "",
"pl_PL": "",
"pt_BR": "Sincronizar data e hora com o sistema PC",
"ru_RU": "",
@@ -6010,7 +6010,7 @@
"it_IT": "",
"ja_JP": "",
"ko_KR": "",
"no_NO": "Aktivere UI-logger",
"no_NO": "",
"pl_PL": "",
"pt_BR": "Habilitar logs da IU",
"ru_RU": "",
@@ -6410,7 +6410,7 @@
"it_IT": "",
"ja_JP": "",
"ko_KR": "",
"no_NO": "Tilbakestill innstillinger",
"no_NO": "",
"pl_PL": "",
"pt_BR": "Redefinir configurações",
"ru_RU": "",
@@ -6435,7 +6435,7 @@
"it_IT": "",
"ja_JP": "",
"ko_KR": "",
"no_NO": "Jeg vil tilbakestille innstillingene mine.",
"no_NO": "",
"pl_PL": "",
"pt_BR": "Quero redefinir minhas configurações.",
"ru_RU": "",
@@ -8360,7 +8360,7 @@
"it_IT": "",
"ja_JP": "",
"ko_KR": "비활성화",
"no_NO": "Deaktiver",
"no_NO": "",
"pl_PL": "",
"pt_BR": "",
"ru_RU": "",
@@ -8385,7 +8385,7 @@
"it_IT": "",
"ja_JP": "",
"ko_KR": "레인보우",
"no_NO": "Regnbue",
"no_NO": "",
"pl_PL": "",
"pt_BR": "",
"ru_RU": "",
@@ -8410,7 +8410,7 @@
"it_IT": "",
"ja_JP": "",
"ko_KR": "레인보우 속도",
"no_NO": "Regnbue Hastighet",
"no_NO": "",
"pl_PL": "",
"pt_BR": "",
"ru_RU": "",
@@ -8435,7 +8435,7 @@
"it_IT": "",
"ja_JP": "",
"ko_KR": "색상",
"no_NO": "Farge",
"no_NO": "",
"pl_PL": "",
"pt_BR": "",
"ru_RU": "",
@@ -13685,7 +13685,7 @@
"it_IT": "",
"ja_JP": "",
"ko_KR": "다음에서 모든 PPTC 데이터를 제거하려고 합니다:\n\n{0}\n\n계속하시겠습니까?",
"no_NO": "Du er i ferd med å slette alle PPTC-data fra:\n\n{0}\n\n\nEr du sikker på at du vil fortsette?",
"no_NO": "",
"pl_PL": "",
"pt_BR": "Você está prestes a limpar todos os dados PPTC de:\n\n{0}\n\nTem certeza de que deseja continuar?",
"ru_RU": "",
@@ -17010,7 +17010,7 @@
"it_IT": "",
"ja_JP": "",
"ko_KR": "",
"no_NO": "Skriver ut Avalonia (UI)-loggmeldinger i konsollen.",
"no_NO": "",
"pl_PL": "",
"pt_BR": "Imprimir mensagens de log do Avalonia (IU) no console.",
"ru_RU": "",
@@ -17935,7 +17935,7 @@
"it_IT": "",
"ja_JP": "",
"ko_KR": "",
"no_NO": "Oppdatering tilgjengelig!",
"no_NO": "",
"pl_PL": "",
"pt_BR": "Atualização disponível!",
"ru_RU": "",
@@ -19735,7 +19735,7 @@
"it_IT": "",
"ja_JP": "",
"ko_KR": "LED 설정",
"no_NO": "LED-innstillinger",
"no_NO": "",
"pl_PL": "",
"pt_BR": "Configurações de LED",
"ru_RU": "",
@@ -23885,7 +23885,7 @@
"it_IT": "",
"ja_JP": "",
"ko_KR": "",
"no_NO": "Starter opp og spiller uten krasj eller GPU-feil av noe slag, og med en hastighet som er rask nok til å ha rimelig glede av på en gjennomsnittlig PC.",
"no_NO": "",
"pl_PL": "",
"pt_BR": "Inicializa e roda sem travamentos ou bugs de GPU de qualquer tipo, e em uma velocidade rápida o suficiente para ser aproveitado em um PC comum.",
"ru_RU": "",
@@ -23910,7 +23910,7 @@
"it_IT": "",
"ja_JP": "",
"ko_KR": "",
"no_NO": "Starter og går i gang i spillet, men lider av ett eller flere av følgende: krasjer, fastlåser, GPU-feil, distraherende dårlig lyd eller er rett og slett for tregt. Spillet kan fortsatt spilles helt til ende, men ikke slik det er ment å spilles.",
"no_NO": "",
"pl_PL": "",
"pt_BR": "Inicializa e entra no jogo, mas sofre de um ou mais dos seguintes: travamentos, deadlocks, bugs de GPU, áudio ruim que distrai ou é simplesmente muito lento. O jogo ainda pode ser jogado até o fim, mas não da forma como foi criado para ser jogado.",
"ru_RU": "",
@@ -23935,7 +23935,7 @@
"it_IT": "",
"ja_JP": "",
"ko_KR": "",
"no_NO": "Starter opp og går forbi tittelskjermen, men kommer ikke inn i hovedspillet.",
"no_NO": "",
"pl_PL": "",
"pt_BR": "Inicializa e passa da tela de título, mas não entra no jogo principal.",
"ru_RU": "",
@@ -23960,7 +23960,7 @@
"it_IT": "",
"ja_JP": "",
"ko_KR": "",
"no_NO": "Starter, men kommer ikke lenger enn til tittelskjermen.",
"no_NO": "",
"pl_PL": "",
"pt_BR": "Inizializa, mas não passa da tela de título.",
"ru_RU": "",
@@ -23985,7 +23985,7 @@
"it_IT": "",
"ja_JP": "",
"ko_KR": "",
"no_NO": "Starter ikke opp eller viser ingen tegn til aktivitet.",
"no_NO": "",
"pl_PL": "",
"pt_BR": "Não inicializa ou não mostra sinais de atividade.",
"ru_RU": "",
@@ -24035,7 +24035,7 @@
"it_IT": "",
"ja_JP": "",
"ko_KR": "",
"no_NO": "Rikt nærværsbilde",
"no_NO": "",
"pl_PL": "",
"pt_BR": "",
"ru_RU": "",
@@ -24060,7 +24060,7 @@
"it_IT": "",
"ja_JP": "",
"ko_KR": "",
"no_NO": "Dynamisk og rik tilstedeværelse",
"no_NO": "",
"pl_PL": "",
"pt_BR": "",
"ru_RU": "",