From ed210c32b3820c77845c27d1f73e6ff2f0828505 Mon Sep 17 00:00:00 2001 From: Subv Date: Thu, 1 Dec 2016 10:47:06 -0500 Subject: [PATCH] Threads do not wait for the server endpoint to call AcceptSession before returning from a ConnectToPort or GetServiceHandle call. --- src/core/hle/service/srv.cpp | 3 ++- src/core/hle/svc.cpp | 5 +++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/src/core/hle/service/srv.cpp b/src/core/hle/service/srv.cpp index d228e3523..c0abfd711 100644 --- a/src/core/hle/service/srv.cpp +++ b/src/core/hle/service/srv.cpp @@ -95,7 +95,8 @@ static void GetServiceHandle(Service::Interface* self) { auto client_session = std::get>(sessions); auto server_session = std::get>(sessions); - // TODO(Subv): Wait the current thread until the ServerPort calls AcceptSession. + // Note: Threads do not wait for the server endpoint to call + // AcceptSession before returning from this call. // Add the server session to the port's queue client_port->AddWaitingSession(server_session); diff --git a/src/core/hle/svc.cpp b/src/core/hle/svc.cpp index 6d990b5f2..ab0eb9d86 100644 --- a/src/core/hle/svc.cpp +++ b/src/core/hle/svc.cpp @@ -234,11 +234,12 @@ static ResultCode ConnectToPort(Handle* out_handle, const char* port_name) { auto client_session = std::get>(sessions); auto server_session = std::get>(sessions); - // TODO(Subv): Wait the current thread until the ServerPort calls AcceptSession. - // Add the server session to the port's queue client_port->AddWaitingSession(server_session); + // Note: Threads do not wait for the server endpoint to call + // AcceptSession before returning from this call. + // Return the client session CASCADE_RESULT(*out_handle, Kernel::g_handle_table.Create(client_session)); return RESULT_SUCCESS;