aboutsummaryrefslogtreecommitdiff
path: root/src/core/hle/service/fs/fs_user.cpp
diff options
context:
space:
mode:
authorSubv <subv2112@gmail.com>2016-12-08 15:01:10 -0500
committerSubv <subv2112@gmail.com>2016-12-08 15:01:10 -0500
commit386112da3265d111595329508b860800e5cf14e8 (patch)
tree7cb27e289abd255ff7f371eff0f9d1ddd07b5d11 /src/core/hle/service/fs/fs_user.cpp
parentf9bcf895103e5a6d99f5fe755bcac92b7781fd38 (diff)
Added a framework for partially handling Session disconnections.
Further implementation will happen in a future commit. Fixes a regression.
Diffstat (limited to 'src/core/hle/service/fs/fs_user.cpp')
-rw-r--r--src/core/hle/service/fs/fs_user.cpp3
1 files changed, 3 insertions, 0 deletions
diff --git a/src/core/hle/service/fs/fs_user.cpp b/src/core/hle/service/fs/fs_user.cpp
index a29bce22a..ea1050fb6 100644
--- a/src/core/hle/service/fs/fs_user.cpp
+++ b/src/core/hle/service/fs/fs_user.cpp
@@ -73,6 +73,7 @@ static void OpenFile(Service::Interface* self) {
if (file_res.Succeeded()) {
std::shared_ptr<File> file = *file_res;
auto sessions = ServerSession::CreateSessionPair(file->GetName(), file);
+ file->ClientConnected(std::get<Kernel::SharedPtr<Kernel::ServerSession>>(sessions));
cmd_buff[3] = Kernel::g_handle_table.Create(std::get<Kernel::SharedPtr<Kernel::ClientSession>>(sessions)).MoveFrom();
} else {
cmd_buff[3] = 0;
@@ -135,6 +136,7 @@ static void OpenFileDirectly(Service::Interface* self) {
if (file_res.Succeeded()) {
std::shared_ptr<File> file = *file_res;
auto sessions = ServerSession::CreateSessionPair(file->GetName(), file);
+ file->ClientConnected(std::get<Kernel::SharedPtr<Kernel::ServerSession>>(sessions));
cmd_buff[3] = Kernel::g_handle_table.Create(std::get<Kernel::SharedPtr<Kernel::ClientSession>>(sessions)).MoveFrom();
} else {
cmd_buff[3] = 0;
@@ -398,6 +400,7 @@ static void OpenDirectory(Service::Interface* self) {
if (dir_res.Succeeded()) {
std::shared_ptr<Directory> directory = *dir_res;
auto sessions = ServerSession::CreateSessionPair(directory->GetName(), directory);
+ directory->ClientConnected(std::get<Kernel::SharedPtr<Kernel::ServerSession>>(sessions));
cmd_buff[3] = Kernel::g_handle_table.Create(std::get<Kernel::SharedPtr<Kernel::ClientSession>>(sessions)).MoveFrom();
} else {
LOG_ERROR(Service_FS, "failed to get a handle for directory type=%d size=%d data=%s",