Skip to content

Commit 6a728f8

Browse files
committed
fix remote RPC not being rejected on disconnect
1 parent 17568e3 commit 6a728f8

File tree

1 file changed

+12
-2
lines changed

1 file changed

+12
-2
lines changed

server/src/CNodeResourceImpl.cpp

+12-2
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ bool CNodeResourceImpl::Start()
6767
std::vector<std::string> args{ resource->GetName() };
6868
std::vector<std::string> execArgs{ };
6969

70-
env = node::CreateEnvironment(nodeData, _context, args, execArgs, flags, threadId, std::move(inspector));
70+
env = node::CreateEnvironment(nodeData, _context, args, execArgs, flags, threadId, std::move(inspector));
7171
node::LoadEnvironment(env, bootstrap_code);
7272

7373
// Not sure it's needed anymore
@@ -171,7 +171,17 @@ void CNodeResourceImpl::OnEvent(const alt::CEvent* e)
171171
auto ev = static_cast<const alt::CPlayerDisconnectEvent*>(e);
172172
auto player = ev->GetTarget();
173173

174-
remoteRPCHandlers.erase(player);
174+
if (remoteRPCHandlers[player].size() > 0)
175+
{
176+
for (const auto rpcHandler : remoteRPCHandlers[player])
177+
{
178+
const auto promise = rpcHandler.PromiseResolver.Get(GetIsolate());
179+
if (promise->IsPromise())
180+
promise->Reject(GetContext(), V8Helpers::JSValue("Player disconnected"));
181+
}
182+
183+
remoteRPCHandlers.erase(player);
184+
}
175185

176186
for (auto it = awaitableRPCHandlers.rbegin(); it != awaitableRPCHandlers.rend(); ++it)
177187
{

0 commit comments

Comments
 (0)