WORKAROUND: temp. disable session resource limits while we work out issues
This commit is contained in:
		@@ -150,8 +150,8 @@ public:
 | 
			
		||||
        if (context->Session()->IsDomain()) {
 | 
			
		||||
            context->AddDomainObject(std::move(iface));
 | 
			
		||||
        } else {
 | 
			
		||||
            kernel.CurrentProcess()->GetResourceLimit()->Reserve(
 | 
			
		||||
                Kernel::LimitableResource::Sessions, 1);
 | 
			
		||||
            // kernel.CurrentProcess()->GetResourceLimit()->Reserve(
 | 
			
		||||
            //    Kernel::LimitableResource::Sessions, 1);
 | 
			
		||||
 | 
			
		||||
            auto* session = Kernel::KSession::Create(kernel);
 | 
			
		||||
            session->Initialize(nullptr, iface->GetServiceName());
 | 
			
		||||
 
 | 
			
		||||
@@ -58,9 +58,9 @@ bool KClientPort::IsSignaled() const {
 | 
			
		||||
 | 
			
		||||
ResultCode KClientPort::CreateSession(KClientSession** out) {
 | 
			
		||||
    // Reserve a new session from the resource limit.
 | 
			
		||||
    KScopedResourceReservation session_reservation(kernel.CurrentProcess()->GetResourceLimit(),
 | 
			
		||||
                                                   LimitableResource::Sessions);
 | 
			
		||||
    R_UNLESS(session_reservation.Succeeded(), ResultLimitReached);
 | 
			
		||||
    // KScopedResourceReservation session_reservation(kernel.CurrentProcess()->GetResourceLimit(),
 | 
			
		||||
    //                                               LimitableResource::Sessions);
 | 
			
		||||
    // R_UNLESS(session_reservation.Succeeded(), ResultLimitReached);
 | 
			
		||||
 | 
			
		||||
    // Update the session counts.
 | 
			
		||||
    {
 | 
			
		||||
@@ -104,7 +104,7 @@ ResultCode KClientPort::CreateSession(KClientSession** out) {
 | 
			
		||||
    session->Initialize(this, parent->GetName());
 | 
			
		||||
 | 
			
		||||
    // Commit the session reservation.
 | 
			
		||||
    session_reservation.Commit();
 | 
			
		||||
    // session_reservation.Commit();
 | 
			
		||||
 | 
			
		||||
    // Register the session.
 | 
			
		||||
    KSession::Register(kernel, session);
 | 
			
		||||
 
 | 
			
		||||
@@ -78,7 +78,7 @@ void KSession::OnClientClosed() {
 | 
			
		||||
void KSession::PostDestroy(uintptr_t arg) {
 | 
			
		||||
    // Release the session count resource the owner process holds.
 | 
			
		||||
    KProcess* owner = reinterpret_cast<KProcess*>(arg);
 | 
			
		||||
    owner->GetResourceLimit()->Release(LimitableResource::Sessions, 1);
 | 
			
		||||
    // owner->GetResourceLimit()->Release(LimitableResource::Sessions, 1);
 | 
			
		||||
    owner->Close();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -158,15 +158,15 @@ ResultVal<Kernel::KClientSession*> SM::GetServiceImpl(Kernel::HLERequestContext&
 | 
			
		||||
 | 
			
		||||
    auto* port = result.Unwrap();
 | 
			
		||||
 | 
			
		||||
    Kernel::KScopedResourceReservation session_reservation(
 | 
			
		||||
        kernel.CurrentProcess()->GetResourceLimit(), Kernel::LimitableResource::Sessions);
 | 
			
		||||
    R_UNLESS(session_reservation.Succeeded(), Kernel::ResultLimitReached);
 | 
			
		||||
    // Kernel::KScopedResourceReservation session_reservation(
 | 
			
		||||
    //    kernel.CurrentProcess()->GetResourceLimit(), Kernel::LimitableResource::Sessions);
 | 
			
		||||
    // R_UNLESS(session_reservation.Succeeded(), Kernel::ResultLimitReached);
 | 
			
		||||
 | 
			
		||||
    auto* session = Kernel::KSession::Create(kernel);
 | 
			
		||||
    session->Initialize(&port->GetClientPort(), std::move(name));
 | 
			
		||||
 | 
			
		||||
    // Commit the session reservation.
 | 
			
		||||
    session_reservation.Commit();
 | 
			
		||||
    // session_reservation.Commit();
 | 
			
		||||
 | 
			
		||||
    if (port->GetServerPort().GetHLEHandler()) {
 | 
			
		||||
        port->GetServerPort().GetHLEHandler()->ClientConnected(&session->GetServerSession());
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user