aboutsummaryrefslogtreecommitdiff
path: root/src/core/hle/kernel/client_port.cpp
diff options
context:
space:
mode:
authorYuri Kunde Schlesner <yuriks@yuriks.net>2017-05-21 17:18:16 -0700
committerGitHub <noreply@github.com>2017-05-21 17:18:16 -0700
commitcc566dadd8cd310658785b87b1692880ce51eeda (patch)
tree07136b798781adb9d864115f338eb62d09147949 /src/core/hle/kernel/client_port.cpp
parent188d63fdb62fbbcfa287e470cefa6c27efa2977d (diff)
parent37347bfa380464a1ee1236d2a35f1ec1b697e4b6 (diff)
Merge pull request #2406 from Subv/session_disconnect
Kernel: Properly update port counters on session disconnection.
Diffstat (limited to 'src/core/hle/kernel/client_port.cpp')
-rw-r--r--src/core/hle/kernel/client_port.cpp13
1 files changed, 5 insertions, 8 deletions
diff --git a/src/core/hle/kernel/client_port.cpp b/src/core/hle/kernel/client_port.cpp
index 22645f4ec..ddcf4c916 100644
--- a/src/core/hle/kernel/client_port.cpp
+++ b/src/core/hle/kernel/client_port.cpp
@@ -19,24 +19,21 @@ ResultVal<SharedPtr<ClientSession>> ClientPort::Connect() {
// AcceptSession before returning from this call.
if (active_sessions >= max_sessions) {
- // TODO(Subv): Return an error code in this situation after session disconnection is
- // implemented.
- /*return ResultCode(ErrorDescription::MaxConnectionsReached,
- ErrorModule::OS, ErrorSummary::WouldBlock,
- ErrorLevel::Temporary);*/
+ return ResultCode(ErrorDescription::MaxConnectionsReached, ErrorModule::OS,
+ ErrorSummary::WouldBlock, ErrorLevel::Temporary);
}
active_sessions++;
// Create a new session pair, let the created sessions inherit the parent port's HLE handler.
auto sessions =
- ServerSession::CreateSessionPair(server_port->GetName(), server_port->hle_handler);
+ ServerSession::CreateSessionPair(server_port->GetName(), server_port->hle_handler, this);
auto client_session = std::get<SharedPtr<ClientSession>>(sessions);
auto server_session = std::get<SharedPtr<ServerSession>>(sessions);
if (server_port->hle_handler)
server_port->hle_handler->ClientConnected(server_session);
-
- server_port->pending_sessions.push_back(std::move(server_session));
+ else
+ server_port->pending_sessions.push_back(std::move(server_session));
// Wake the threads waiting on the ServerPort
server_port->WakeupAllWaitingThreads();