aboutsummaryrefslogtreecommitdiff
path: root/Ryujinx.HLE/HOS/Services/IpcService.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Ryujinx.HLE/HOS/Services/IpcService.cs')
-rw-r--r--Ryujinx.HLE/HOS/Services/IpcService.cs22
1 files changed, 19 insertions, 3 deletions
diff --git a/Ryujinx.HLE/HOS/Services/IpcService.cs b/Ryujinx.HLE/HOS/Services/IpcService.cs
index 71683ce3..2a4a9319 100644
--- a/Ryujinx.HLE/HOS/Services/IpcService.cs
+++ b/Ryujinx.HLE/HOS/Services/IpcService.cs
@@ -89,13 +89,29 @@ namespace Ryujinx.HLE.HOS.Services
long sfciMagic = context.RequestData.ReadInt64();
int commandId = (int)context.RequestData.ReadInt64();
- if (service.Commands.TryGetValue(commandId, out ServiceProcessRequest processRequest))
+ bool serviceExists = service.Commands.TryGetValue(commandId, out ServiceProcessRequest processRequest);
+
+ if (ServiceConfiguration.IgnoreMissingServices || serviceExists)
{
+ long result = 0;
+
context.ResponseData.BaseStream.Seek(_isDomain ? 0x20 : 0x10, SeekOrigin.Begin);
- Logger.PrintDebug(LogClass.KernelIpc, $"{service.GetType().Name}: {processRequest.Method.Name}");
+ if (serviceExists)
+ {
+ Logger.PrintDebug(LogClass.KernelIpc, $"{service.GetType().Name}: {processRequest.Method.Name}");
- long result = processRequest(context);
+ result = processRequest(context);
+ }
+ else
+ {
+ string serviceName;
+ DummyService dummyService = service as DummyService;
+
+ serviceName = (dummyService == null) ? service.GetType().FullName : dummyService.ServiceName;
+
+ Logger.PrintWarning(LogClass.KernelIpc, $"Missing service {serviceName}: {commandId} ignored");
+ }
if (_isDomain)
{